显然,在我的最后一个问题中,我表现出 和 之间的data.frame
混淆data.table
。诚然,我没有意识到有区别。
所以我阅读了每一个的帮助,但实际上,日常用语,有什么区别,有什么含义以及每个用于帮助指导我正确使用它们的方法?
显然,在我的最后一个问题中,我表现出 和 之间的data.frame
混淆data.table
。诚然,我没有意识到有区别。
所以我阅读了每一个的帮助,但实际上,日常用语,有什么区别,有什么含义以及每个用于帮助指导我正确使用它们的方法?
虽然这是一个广泛的问题,但如果有人R
对此不熟悉,可能会造成混淆,并且可能会失去区别。
所有data.table
的 s 也是data.frame
s。粗略地说,您可以将 data.tables 视为具有额外功能的 data.frames。
data.frame
是 base 的一部分R
。
data.table
是一个扩展的包data.frames
。它最显着的两个特性是速度和更简洁的语法。
但是,该语法糖与 data.frame 的标准 R 语法不同,而且未经训练的眼睛很难一目了然。因此,如果您阅读代码片段并且没有其他上下文表明您正在使用 data.tables 并尝试将代码应用于 data.frame,它可能会失败或产生意外结果。library
(除了/require
调用之外,您正在使用 dt 的一个明确赠品是存在:=
dt 独有的赋值运算符)
话虽如此,我认为如果不体验它的缺点,很难真正欣赏它的美data.table
data.frame
。(例如,请参阅@eddi 答案的前 3 个要点)。换句话说,我非常建议data.frames
先学习如何使用和操作,然后再学习data.table
s。
我想到的日常生活中的一些差异(排名不分先后):
data.table
在表达式中一遍又一遍地指定名称(导致笨拙的语法和愚蠢的错误)(另一方面,我有时会错过名称的 TAB 补全)by
操作df
,忘记了有多大df
(也导致几乎从不使用head
)fread
%between%
或rbindlist
使生活更美好data.frame
操作不必要地复制整个事物它们是相似的。数据帧是等长向量的列表,而数据表 ( data.table
) 是数据帧的继承。因此数据表是数据框,但数据框不一定是数据表。编写数据表包和函数以提高索引、有序连接、分配、分组和列出列(等)的速度。
有关详细信息,请参阅http://datatable.r-forge.r-project.org/datatable-intro.pdf。