显然,在我的上一个问题中,我展示了data.frame
和data.table
之间的混淆。不可否认,我没有意识到有区别。
所以我阅读了每一个的帮助,但是在实际的日常用语中,有什么不同,含义是什么以及每个用于什么会有助于指导我们适当的使用?
答案 0 :(得分:57)
虽然这是一个广泛的问题,但如果有人是R
的新手,这可能会令人困惑,这种区别可能会丢失。
所有data.table
也是data.frame
个。简而言之,您可以将data.tables视为具有额外功能的data.frames。
data.frame
是基地R
的一部分。
data.table
是一个扩展data.frames
的包。它最显着的两个特点是速度和更清晰的语法。
然而,语法糖与data.frame的标准R语法不同,而未经训练的眼睛难以一目了然地区分。因此,如果您阅读了代码段并且没有其他上下文指示您正在使用data.tables并尝试将代码应用于data.frame,则可能会失败或产生意外结果。 (除了library
/ require
调用之外,您正在使用d.t的明确赠品是存在赋值运算符:=
,这对于d.t来说是唯一的
尽管如此,我认为在没有遇到data.table
的缺点的情况下,很难真正体会到data.frame
的美丽。 (例如,请参阅@ eddi答案的前3个要点)。换句话说,我非常建议先学习如何使用和操作data.frames
然后转到data.table
。
答案 1 :(得分:32)
我想到的日常生活中的一些差异(没有特别的顺序):
data.table
名称(导致笨拙的语法和愚蠢的错误)(另一方面,我有时会错过TAB完成名称)by
操作df
后不再疯狂地按Ctrl-C,忘记了df
的大小(也导致几乎从不使用head
)fread
%between%
或rbindlist
,可以让生活更美好data.frame
操作不必要地复制了整个内容答案 2 :(得分:8)
他们很相似。数据帧是相等长度的向量列表,而数据表(data.table
)是数据帧的继承。因此,数据表是数据帧,但数据帧不一定是数据表。编写数据表包和函数是为了提高索引,有序连接,赋值,分组和列出列(等)的速度。
有关详细信息,请参阅http://datatable.r-forge.r-project.org/datatable-intro.pdf。