R数据表问题

R数据表问题,r,R,我在使用R中的数据表时遇到问题。这可能非常简单,但我在任何地方都找不到解决方案 以下是我所拥有的: 假设t是数据表 colNames <- names(t) for (col in colNames) { print (t$col) } colNames您需要t[[col]]t$col执行一种奇怪的评估形式 编辑:合并@joran的解释: t$col尝试在列表t中查找字面上名为'col'的元素,而不是在名为col的变量中存储为值的元素 $便于交互使用,因为它较短,可以跳过引号(

我在使用R中的数据表时遇到问题。这可能非常简单,但我在任何地方都找不到解决方案

以下是我所拥有的: 假设t是数据表

colNames <- names(t)
for (col in colNames) {
    print (t$col)
}

colNames您需要
t[[col]]
t$col
执行一种奇怪的评估形式

编辑:合并@joran的解释:

t$col
尝试在列表
t
中查找字面上名为
'col'
的元素,而不是在名为
col
的变量中存储为值的元素

  • $
    便于交互使用,因为它较短,可以跳过引号(即
    t$foo
    vs.
    t[[“foo”]]
    。它还进行部分匹配,这非常方便,但在异常情况下可能会造成危险或混乱:即,如果列表包含一个元素
    愚蠢
    ,则
    t$foo
    将检索该元素。因此,通常不建议编程使用该元素
  • [[
    可以接受文本字符串(
    “foo”
    )或存储在变量中的字符串(
    col
    ),并且不进行部分匹配。通常建议在编程时使用它(尽管以交互方式使用它不会造成任何伤害)

您需要
t[[col]]
t$col
进行一种奇怪的评估

编辑:合并@joran的解释:

t$col
尝试在列表
t
中查找字面上名为
'col'
的元素,而不是在名为
col
的变量中存储为值的元素

  • $
    便于交互使用,因为它较短,可以跳过引号(即
    t$foo
    vs.
    t[[“foo”]]
    。它还进行部分匹配,这非常方便,但在异常情况下可能会造成危险或混乱:即,如果列表包含一个元素
    愚蠢
    ,则
    t$foo
    将检索该元素。因此,通常不建议编程使用该元素
  • [[
    可以接受文本字符串(
    “foo”
    )或存储在变量中的字符串(
    col
    ),并且不进行部分匹配。通常建议在编程时使用它(尽管以交互方式使用它不会造成任何伤害)

您(或其他人)可以吗澄清原因?我在自己的工作中注意到一些类似于NSP的问题,并发现自己正在迁移到您给出的解决方案,但这只是因为我遇到的问题较少。我不知道为什么会出现这种差异。@Iterator-
t$col
试图在
t
中找到字面上名为“col”的东西,而不是在h身上发生的事情ave作为一个值存储在名为
col
的变量中。如果
t
是一个数据帧并且没有名为“col”的列,它将返回null。至于原因,
$
[[
只是不同的工具,应该在不同的环境中使用;每种工具都有各自的方便方式。@joran:谢谢,这很好地解释了这一点。你(或其他人)可以吗澄清原因?我在自己的工作中注意到一些类似于NSP的问题,并发现自己正在迁移到您给出的解决方案,但这只是因为我遇到的问题较少。我不知道为什么会出现这种差异。@Iterator-
t$col
试图在
t
中找到字面上名为“col”的东西,而不是在h身上发生的事情ave作为一个值存储在名为
col
的变量中。如果
t
是一个数据帧,并且没有名为“col”的列,它将返回null。至于原因,
$
[[
只是不同的工具,应该在不同的情况下使用;每一种工具都有各自的方便方式。@joran:谢谢,这就很好地解释了。