楼主: swyggq
1305 5

[问答] 似乎还有些问题,关于让程序自动创建变量 [推广有奖]

  • 0关注
  • 0粉丝

博士生

28%

还不是VIP/贵宾

-

威望
0
论坛币
2659 个
通用积分
4.7096
学术水平
5 点
热心指数
7 点
信用等级
1 点
经验
17348 点
帖子
136
精华
0
在线时间
412 小时
注册时间
2012-1-15
最后登录
2022-1-21

楼主
swyggq 发表于 2017-3-9 19:35:06 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
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
的结果,那就更好了
二维码

扫码加我 拉你入群

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

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

关键词:提问 R代码 内核问题

沙发
swyggq 发表于 2017-3-9 23:24:51
没有人吗?
好容易发现了一个提速R的方法呢

藤椅
bbslover 在职认证  发表于 2017-3-13 08:17:22
看看assign函数
http://127.0.0.1:18496/library/base/html/assign.html
已有 1 人评分经验 收起 理由
李会超 + 40 精彩帖子

总评分: 经验 + 40   查看全部评分

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

报纸
swyggq 发表于 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),就一切都解决了

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

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-25 19:57