R中的data.frame和data.table之间有什么实际区别

时间:2013-08-01 17:49:29

标签: r data.table

显然,在我的上一个问题中,我展示了data.framedata.table之间的混淆。不可否认,我没有意识到有区别。

所以我阅读了每一个的帮助,但是在实际的日常用语中,有什么不同,含义是什么以及每个用于什么会有助于指导我们适当的使用?

3 个答案:

答案 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