在每次迭代中创建一个新变量

时间:2018-08-12 20:14:49

标签: r loops variables

我要在运行循环时创建一个新变量。 例如,在1到10的for循环中,创建变量t1,t2,t3,依此类推。

for i in 1:10{
              Ti=i
                   }

我该怎么做?

非常感谢。

1 个答案:

答案 0 :(得分:2)

我想知道为什么您会这样做,但是也有一种方法可以做到这一点。 R中有一个称为assign的函数。你可以写

for (i in 1:10) {
  assign(paste0("T", i), i, envir = .GlobalEnv)
}
# Check that we have those variables
ls()
#> [1] "i"   "T1"  "T10" "T2"  "T3"  "T4"  "T5"  "T6"  "T7"  "T8"  "T9"

assign的第一个参数是变量的名称。第二个是要分配给变量的值。第三是变量将在其中生存的环境。在这里,我将变量放入全局环境。

也就是说,解决此类问题的更好方法是使用apply函数系列,该函数系列生成一个向量来存储循环的每次迭代的输出,或者首先启动一个向量,然后填写向量;这样,您在for循环中生成的值将保存在同一位置,并且更易于组织和计算。 R非常矢量化。

编辑:另一条建议:全局分配通常被认为是不好的,因为它可能会添加隐秘的依赖关系,从而在出现问题时难以调试代码。