【问题标题】:create a new variable in each iteration在每次迭代中创建一个新变量
【发布时间】:2019-01-19 14:27:56
【问题描述】:

我想在运行循环时创建一个新变量。 例如,在从 1 到 10 的 for 循环中,创建变量 t1、t2、t3 等。

for i in 1:10{
              Ti=i
                   }

我该怎么做?

非常感谢。

【问题讨论】:

  • 代码是用R编写的。
  • 您能否添加一些示例数据并显示您想要实现的目标,即预期输出。

标签: r loops variables


【解决方案1】:

我想知道你为什么要这样做,但也有办法做到这一点。 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 非常矢量化。

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

【讨论】:

  • 如果您使用ls.str(),您还可以快速检查变量是否包含您期望的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-10
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2020-06-17
  • 2021-08-02
  • 1970-01-01
相关资源
最近更新 更多