【发布时间】:2013-04-29 08:38:51
【问题描述】:
我需要为 my_function(i,x) 创建额外的名称(其中i 可以是 1 到 25 之间的整数)。我希望它像这样工作
- my_function1(x) 与 my_function(1,x) 相同
- my_function2(x) 与 my_function(2,x) 相同
- my_function3(x) 与 my_function(3,x) 相同
- ...
- my_function25(x) 与 my_function(25,x) 相同
实现这一目标的一种方法是:
my_function1 <- function (x) my_function(1, x)
my_function2 <- function (x) my_function(2, x)
my_function3 <- function (x) my_function(3, x)
...
但由于其中有 25 个,因此将其置于循环中是合理的。为此,我已经尝试过:
for(i in 1:25){
assign(paste("my_function",i,sep=""),function(x) my_function(i,x))
}
但它不起作用,因为 i 是通过引用传递的,最终结果是
- my_function1(x) 与 my_function(25,x) 相同
- my_function2(x) 与 my_function(25,x) 相同
- my_function3(x) 与 my_function(25,x) 相同
- ...
如何按值传递“i”?或者也许还有其他方法……
我为什么要这样做?我正在提高其他人的 R 包的效率,但同时我需要它与旧版本兼容。
【问题讨论】:
-
欢迎来到 SO。如果您下次发布reproducible example,您会发现您会得到更好的答案。或者这一次,因为你可以编辑你的帖子:-)
-
@AriB.Friedman 谢谢 :) 下次我会记得写可重现的例子。 Curry 看起来很干净,而且效果很好,但在这种情况下,我宁愿使用一些标准的 R 函数,因为我真的不想安装任何额外的包。