尝试在R中的循环内访问变量

时间:2018-10-19 14:13:54

标签: r

我试图用相当多的数据制作10个不同的向量。下面的代码工作正常,直到我想对向量进行排序。我知道我缺少某些东西,但我不足以理解它是什么。 希望有人能帮忙。

for(i in 1:10) {
  rnd <- runif(1, 1000, 60000)
  nam <- paste("vec", i, sep = "")
  assign(nam, rweibull(rnd, scale=10, shape = 7))
  nam <- sort(nam)
}

2 个答案:

答案 0 :(得分:1)

修复

nam是变量的名称,而不是变量本身,因此,最后一行需要更改为:

assign(nam, sort(get(nam)))

或者删除最后一行并将第二行更改为:

assign(nam, sort(rweibull(rnd, scale=10, shape = 7)))

替代

更好的方法可能是创建向量的单个列表L。然后L[[i]]指的是ith。

L <- replicate(10, sort(rweibull(runif(1, 1000, 60000), scale = 10, shape = 7)))

种子

请注意,每次您执行上述任意操作时,随机数都会更改,因此请设置种子,例如

set.seed(123)

在运行代码之前,如果希望能够在多次运行时准确地复制代码。

答案 1 :(得分:0)

在排序之前,您可能需要从nam获取值。

for(i in 1:10) {
 rnd <- runif(1, 1000, 60000)
 nam <- paste("vec", i, sep = "")
 assign(nam, rweibull(rnd, scale=10, shape = 7))
 assign(nam, sort(get(nam)))
}