如何使用for循环生成随机函数?

时间:2019-05-26 03:41:44

标签: r

我想使用for循环创建随机的函数集,但是最终我的函数是一样的。

我想这与环境有关,但是我无法解决它:

a <- runif(100)

for(i in 1:100){
  assign(paste0("r",i), function(x){a[i]*x})
  }

创建的所有一百个函数(从r1到r100)最终都是相同的。

我希望他们具有随机的 a 参数。

2 个答案:

答案 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)
  }))

您可能已经注意到,功能r1r100始终使用a[100]求值。这是因为循环结束时有i=100。如果将i更改为其他内容,则会得到不同的函数评估。