74

我有一个 for 循环:

for (i in 1:10){ Ai=d+rnorm(3)}

我想做的是拥有A1, A2,A3...A10并且我i在变量名中有变量。

它不能以这种方式工作,但我可能会遗漏一些小东西。如何i在 for 循环中使用 来分配不同的变量名?

4

3 回答 3

111
d <- 5
for(i in 1:10) { 
 nam <- paste("A", i, sep = "")
 assign(nam, rnorm(3)+d)
}

更多信息在这里甚至在这里

于 2013-05-15T13:46:42.263 回答
17

您可以使用assign,但使用assign(or get) 通常是一种不太像 R 的编程结构的症状。通常,列表或矩阵允许更清洁的解决方案。

  • 有一个清单:

    A <- lapply (1 : 10, function (x) d + rnorm (3))
    
  • 有一个矩阵:

    A <- matrix (rep (d, each = 10) + rnorm (30), nrow = 10)
    
于 2013-05-15T13:46:28.183 回答
4

另一种选择是使用 eval 和 parse,如

d = 5
for (i in 1:10){
     eval(parse(text = paste('a', 1:10, ' = d + rnorm(3)', sep='')[i]))
}
于 2020-07-06T22:00:03.340 回答