我在使用R中的数据表时遇到了问题。这可能非常简单但我无法在任何地方找到解决方案。
以下是我所拥有的: 假设t是数据表
colNames <- names(t)
for (col in colNames) {
print (t$col)
}
当我这样做时,它会打印出NULL。但是,如果我手动执行,它可以正常工作 - 比如列名称是“sample”。如果我在R提示符中键入t $“sample”,它可以正常工作。我在这里做错了什么?
答案 0 :(得分:5)
您需要t[[col]]
; t$col
做了一种奇怪的评估形式。
编辑:合并@joran的解释:
t$col
尝试在列表'col'
中找到一个名为t
的元素,而不是您在名为col
的变量中存储为值的内容。
$
方便交互式使用,因为它更短,可以跳过引号(即t$foo
与t[["foo"]]
。它还可以部分匹配,这非常方便,但在特殊情况下可能会有危险或令人困惑:即如果列表包含元素foolicious
,则t$foo
将检索它。因此它不一般建议用于编程。[[
可以采用文字字符串("foo"
)或存储在变量(col
)中的字符串,也不进行部分匹配。通常建议用于编程(尽管以交互方式使用它没有任何害处)。