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

rem*_*rth 44 r data.table

显然在我的上一个问题中,我表现出了data.frame和之间的混淆data.table.不可否认,我没有意识到有区别.

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

Ric*_*rta 61

虽然这是一个广泛的问题,但如果有人R不熟悉这可能会令人困惑,这种区别可能会丢失.

所有的data.tables都是data.frames.简而言之,您可以将data.tables视为具有额外功能的data.frames.

data.frame是基地的一部分R.

data.table是一个扩展的包data.frames.它最显着的两个特点是速度和更清晰的语法.

然而,该语法糖与data.frame的标准R语法不同,而未经训练的眼睛难以一目了然地区分.因此,如果您阅读了代码段并且没有其他上下文指示您正在使用data.tables并尝试将代码应用于data.frame,则可能会失败或产生意外结果.(一个明确的赠品,你正在使用d.t's,除了library/ requirecall是赋值运算符的存在,:=这是dt独有的)

尽管如此,我认为很难真正体会到data.table没有经历缺点的美感data.frame.(例如,请参阅@ eddi答案的前3个要点).换句话说,我非常建议先学习如何使用和操作,data.frames然后再继续操作data.table.


edd*_*ddi 33

我想到的日常生活中的一些差异(没有特别的顺序):

  • 不必data.table在表达式中反复指定名称(导致笨拙的语法和愚蠢的错误)(另一方面,我有时会错过名称的TAB完成)
  • 更快,更直观的by操作
  • 键入后不再疯狂地按Ctrl-C df,忘记了多大df(也导致几乎从不使用head)
  • 更快更好的文件阅读 fread
  • 该软件包还提供了许多其他实用功能,例如%between%rbindlist使生活更美好
  • 更快的一切,因为很多data.frame操作不必要地复制整个事情


Ell*_*ner 8

它们很相似.数据帧是相等长度的向量列表,而数据表(data.table)是数据帧的继承.因此,数据表是数据帧,但数据帧不一定是数据表.编写数据表包和函数是为了提高索引,有序连接,赋值,分组和列出列(等)的速度.

有关更多信息,请参见http://datatable.r-forge.r-project.org/datatable-intro.pdf.

  • 它们的外观相似. (2认同)