循环遍历R中的非标准变量名

时间:2018-09-10 14:43:26

标签: r for-loop vector

我有一个数据框(df),其变量看起来类似于矢量变量:

myvariable[1], myvariable[2] , myvariable[3]

但是,如果我要引用它们,R会自动在它们周围创建树皮:

df$`myvariable[1]`

我想在for循环中使用这些变量,因此想自动更改方括号内的数字。有谁知道如何做到这一点?

PS:这个问题与其他问题有所不同,因为R不会将我的变量视为向量变量,而是将它们视为外观相同的单个变量。因此,我变量的[]部分仅被视为某种类型的字符串,而不是子集运算符。

PS2:dput(head(zTT$subjects[, c("myvariable[1]","myvariable[3]","myvariable[4]")],4))

structure(list(\`myvariable[1]\` = c(2, 4, 2, 9), \`myvariable[3]\` = c(1, 
1,2, 3), \`myvariable[4]\` = c(2, 4, 2, 7)), .Names = c("myvariable[1]", 
"myvariable[3]", "myvariable[4]"), row.names = c(NA, 4L), class = "data.frame")

1 个答案:

答案 0 :(得分:0)

根据akrun的建议,您可以使用[[。下面的代码使用您自己的数据框架来构造与列表名称相对应的字符串。

temp <- structure(list(`myvariable[1]` = c(2, 4, 2, 9),
                       `myvariable[3]` = c(1, 1,2, 3),
                       `myvariable[4]` = c(2, 4, 2, 7)),
                  .Names = c("myvariable[1]", "myvariable[3]",
                             "myvariable[4]"), row.names = c(NA, 4L),
                  class = "data.frame")

for (i in c(1, 3, 4)) {
  myVar <- paste0("myvariable[", i, "]")
  print(temp[[myVar]])

}