当我运行循环时,我想创建一个新的变量。例如,在从1到10的For循环中,创建变量t1、t2、t3等。
for i in 1:10{
Ti=i
}
我该怎么做呢?
非常感谢。
发布于 2018-08-13 04:26:52
我想知道你为什么要这样做,但是有一种方法可以做到这一点。在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是非常向量化的。
编辑:另一条建议:全局赋值通常被认为是不好的,因为它可能会添加隐蔽的依赖关系,使代码在出错时很难调试。
https://stackoverflow.com/questions/51812484
复制相似问题