全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
1306 5
2017-03-09
library(compiler)
"fast<-"=function(`*tmp*`,value)`*tmp*`<-cmpfun(value,list(optimize=3))
在编程的时候用fast(func)=function(...){...}代替func=function(...){...}可以获得1.33-2X的提速
然而问题是,如果这样做,当foo未定义时候
fast(foo)=function(bar)bar
会提示
Error in fast(foo) = function(bar) bar : 找不到对象'foo'
有没有什么解决方法,(让程序发现foo未定义的时候)自动生成一个新的foo
目前的解决方法是用命令fast(foo)=foo=function(bar)bar代替fast(foo)=function(bar)bar
然而这里的问题还是那样……
如果函数比较长……我们需要输入很长一串字符,比如……
fast(`This is a very very long function name to describe what the hell this F**KING function will do`)=
`This is a very very long function name to describe what the hell this F**KING function will do`=function(bar)bar
想知道有没有什么只输入一次变量名就能解决问题的方法
甚至如果能重写function之后实现输入`This is a very very long function name to describe what the hell this F**KING function will do`=function(bar)bar得到的结果就跟实现重写function之前输入library(compiler)
"fast<-"=function(`*tmp*`,value)`*tmp*`<-cmpfun(value,list(optimize=3))
fast(`This is a very very long function name to describe what the hell this F**KING function will do`)=
`This is a very very long function name to describe what the hell this F**KING function will do`=function(bar)bar
的结果,那就更好了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-3-9 23:24:51
没有人吗?
好容易发现了一个提速R的方法呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-13 08:17:22
看看assign函数
http://127.0.0.1:18496/library/base/html/assign.html
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-3-13 09:00:56
在运行fast之前检测一下环境中是否存在foo,如果不存在就用assign,eval等函数建一个foo
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-14 16:47:08
bbslover 发表于 2017-3-13 08:17
看看assign函数
http://127.0.0.1:18496/library/base/html/assign.html
{:2_29:}其实……assign并不是那么好用的……记得当初连异常处理都用上了……然而没用,总是报错。
最后发现……看上去这条路根本行不通……而只要enableJIT(3),就一切都解决了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-5-14 19:41:58
swyggq 发表于 2017-5-14 16:47
其实……assign并不是那么好用的……记得当初连异常处理都用上了……然而没用,总是报错。
最后 ...
谢谢 分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群