使用标题从表中拉出列?

时间:2011-09-19 16:53:37

标签: r

给出一个表格表格:

  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

为什么这不起作用?有没有办法使这项工作?

2 个答案:

答案 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]]

将在$运算符可以工作的任何位置工作(列表和派生类,如数据框)。问题是访问列表和数据框的$方式更像是一种快捷方式,可以将后面的内容视为字符串。如果要使用作为评估代码结果的字符串,则必须使用某种括号表示法。