在哪里可以找到有关通过以下方式调用data.frame中的列之间的差异的信息:
df <- data.frame(x=1:20,y=letters[1:20],z=20:1)
df$x
df["x"]
它们都返回“相同”的结果,但格式不一定相同。我注意到的另一件事是df$x返回一个列表。而df"x“返回一个data.frame。
编辑:然而,知道在哪种情况下使用哪种方法已经成为一个挑战。这里有没有一个最佳实践,或者它真的归结为知道命令或函数需要什么?到目前为止,如果我的函数一开始不起作用,我只是循环使用它们(试错)。
发布于 2010-07-30 14:22:32
如果我没记错的话,df$x
和df[['x']]
是一样的。[[
用于选择任何单个元素,而[
则返回所选元素的列表。另请参见the language reference。我通常看到[[用于列表,[用于数组,$用于获取单个列或元素。如果您需要一个表达式(例如df[name]或df,名称),则也可以使用[或[[符号。如果选择了多个列,也会使用[符号。例如df,c('name1','name2')。我不认为这方面有一个最佳实践。
发布于 2010-07-30 20:54:52
另一个不同之处在于,df$w
返回NULL
,而df['w']
或df[['w']]
返回示例数据帧错误。
发布于 2010-09-22 02:32:07
在这种情况下,对于大多数用途,我会完全避免子设置,并尝试记住$
、[
和[[
对数据帧做了什么。我只会使用with()
> df <- data.frame(x = 1:20, y = letters[1:20], z = 20:1)
> with(df, y)
[1] a b c d e f g h i j k l m n o p q r s t
Levels: a b c d e f g h i j k l m n o p q r s t
这比大多数情况下的任何子设置方法都要清楚得多(IMHO)。
https://stackoverflow.com/questions/3369025
复制相似问题