【发布时间】:2018-09-10 14:43:25
【问题描述】:
我有一个数据框 (df),其中的变量看起来类似于向量变量:
myvariable[1], myvariable[2] , myvariable[3] 等
但是,如果我想引用它们,R 会自动在它们周围创建 barticks:
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")
【问题讨论】:
-
使用
[[代替$即df[[myvariable[1]]] -
非常感谢您的快速回复。不幸的是,这不起作用。
-
很抱歉听到这个消息。它基于假设您有一个 data.frame 和列名或索引存储在
myvariable即df <- data.frame(col1 = 1:5, col2 = 6:10, col3 = 11:15); myvariable <- c('col1', 'col2'); df[[myvariable[1]]]此外,doesn't work可以有很多含义 -
寻求帮助时,您应该包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出。使用
dput()共享数据,以便我们确切地知道我们正在处理什么。此外,通常有更有效的方法来编写代码来循环列而不是编写 for 循环。最好更准确地描述您要完成的工作。 -
我不确定您的数据集中还有哪些其他变量,但您可以循环通过
names(dataset)而不是使用索引进行循环(这可能会解决问题)。否则,您可能需要在循环中“构造”名称。例如,如果i是索引号,您可以执行paste0("myvariable[", i, "]")之类的操作。 (也许添加一些有关您尝试执行的实际任务的信息,因为这可能是一个“XY”问题。:))