给出一个表格表格:
a b c
X1 0 1 0
X2 1 0 0
X3 1 0 0
为了从表中拉出一列:
col.1 <- table$a
假设您有一个变量:
col.name <- 'a'
col.1 <- table$col.name
为什么这不起作用?有没有办法使这项工作?
答案 0 :(得分:3)
它不起作用,因为“$”运算符不评估其参数。你需要的是使用“[”或“[[”。 (调用你的表不是一个好主意。“table”。它会混淆使用table
函数的用户。)
table <- structure(c(0, 1, 1, 1, 0, 0, 0, 0, 0), .Dim = c(3L, 3L), .Dimnames = list(
c("X1", "X2", "X3"), c("a", "b", "c")), class = "table")
table[ , col.name]
# X1 X2 X3
# 0 1 1
table[ , "a"]
# X1 X2 X3
# 0 1 1
table
table[["a"]]
Error in table[["a"]] : subscript out of bounds
答案 1 :(得分:2)
table[[col.name]]
将在$
运算符可以工作的任何位置工作(列表和派生类,如数据框)。问题是访问列表和数据框的$
方式更像是一种快捷方式,可以将后面的内容视为字符串。如果要使用作为评估代码结果的字符串,则必须使用某种括号表示法。