我要在运行循环时创建一个新变量。 例如,在1到10的for循环中,创建变量t1,t2,t3,依此类推。
for i in 1:10{
Ti=i
}
我该怎么做?
非常感谢。
答案 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非常矢量化。
编辑:另一条建议:全局分配通常被认为是不好的,因为它可能会添加隐秘的依赖关系,从而在出现问题时难以调试代码。