首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在R中,df["x"]和df$x之间的区别是什么

在R中,df["x"]和df$x之间的区别是什么
EN

Stack Overflow用户
提问于 2010-07-30 14:05:20
回答 4查看 6.6K关注 0票数 18

在哪里可以找到有关通过以下方式调用data.frame中的列之间的差异的信息:

代码语言:javascript
复制
df <- data.frame(x=1:20,y=letters[1:20],z=20:1)

df$x
df["x"]

它们都返回“相同”的结果,但格式不一定相同。我注意到的另一件事是df$x返回一个列表。而df"x“返回一个data.frame。

编辑:然而,知道在哪种情况下使用哪种方法已经成为一个挑战。这里有没有一个最佳实践,或者它真的归结为知道命令或函数需要什么?到目前为止,如果我的函数一开始不起作用,我只是循环使用它们(试错)。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-30 14:22:32

如果我没记错的话,df$xdf[['x']]是一样的。[[用于选择任何单个元素,而[则返回所选元素的列表。另请参见the language reference。我通常看到[[用于列表,[用于数组,$用于获取单个列或元素。如果您需要一个表达式(例如df[name]或df,名称),则也可以使用[或[[符号。如果选择了多个列,也会使用[符号。例如df,c('name1','name2')。我不认为这方面有一个最佳实践。

票数 14
EN

Stack Overflow用户

发布于 2010-07-30 20:54:52

另一个不同之处在于,df$w返回NULL,而df['w']df[['w']]返回示例数据帧错误。

票数 16
EN

Stack Overflow用户

发布于 2010-09-22 02:32:07

在这种情况下,对于大多数用途,我会完全避免子设置,并尝试记住$[[[对数据帧做了什么。我只会使用with()

代码语言:javascript
复制
> 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)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3369025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档