我想使用for循环创建随机的函数集,但是最终我的函数是一样的。
我想这与环境有关,但是我无法解决它:
a <- runif(100)
for(i in 1:100){
assign(paste0("r",i), function(x){a[i]*x})
}
创建的所有一百个函数(从r1到r100)最终都是相同的。
我希望他们具有随机的 a 参数。
答案 0 :(得分:0)
尝试一下:
for(i in 1:100){
a <- runif(1)
assign(paste0("r",i), function(x){a*x})
}
答案 1 :(得分:0)
这是来自user202729注释中链接的改编版本:
a <- runif(100)
invisible(lapply(1:100, function(i) {
assign(paste0("r",i), function(x){a[i]*x}, envir = .GlobalEnv)
}))
您可能已经注意到,功能r1
至r100
始终使用a[100]
求值。这是因为循环结束时有i=100
。如果将i
更改为其他内容,则会得到不同的函数评估。