R数据表问题
我在使用R中的数据表时遇到问题。这可能非常简单,但我在任何地方都找不到解决方案 以下是我所拥有的: 假设t是数据表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的变量中存储为值的元素 $便于交互使用,因为它较短,可以跳过引号(
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:谢谢,这就很好地解释了。