R数据表问题

NSP*_*NSP 0 r

我在使用R中的数据表时遇到了麻烦.这可能非常简单,但我无法在任何地方找到解决方案.

这就是我所拥有的:假设t是数据表

colNames <- names(t)
for (col in colNames) {
    print (t$col)
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,它打印NULL.但是,如果我手动执行,它可以正常工作 - 比如列名称是"sample".如果我在R提示符下键入t $"sample",它可以正常工作.我在这做错了什么?

Ben*_*ker 5

你需要t[[col]]; t$col做一种奇怪的评估形式.

编辑:纳入@joran的解释:

t$col尝试'col'在列表中找到一个字面命名的元素t,而不是您在命名变量中存储的值col.

  • $方便交互使用,因为它更短,可以跳过引号(即t$foo相对于t[["foo"]].它也进行部分匹配,这非常方便,但在特殊情况下可能是危险或混乱的:即如果列表包含元素foolicious,则t$foo将检索它.因此通常不建议编程.
  • [[可以采用文字字符串("foo")或存储在变量(col)中的字符串,并且不进行部分匹配.通常建议用于编程(尽管交互使用它没有任何害处).

  • @Iterator - `t $ col`尝试在`t`中找到*字面上命名为'col'*的东西,而不是你在一个名为`col`的变量中存储的值.如果`t`是一个数据框并且没有名为'col'的列,它将返回null.至于为什么,`$`和`[[`只是不同的工具,应该在不同的情况下使用; 每个都以自己的方式方便. (3认同)