2013-08-01 210 views
29

显然,在我的最后一个问题我data.framedata.table之间表现出的混乱的实际差别。诚然,我没有意识到有一个区别。是什么data.frame和data.table之间R中

所以我读的每个但在实际的日常方面的帮助,有什么不同,会造成什么影响,且各自用途是什么,这将有助于引导我到他们适当的使用?

+2

-1。问题太广泛。 –

+0

@AnandaMahto,谢谢,但它也是一个天才的机会,想出一个全面和简洁的答案... :-) –

+12

@Justin:链接是有帮助的。我没有意识到他们。也许你可以没有态度地通知。 @ Ferdinand.kraft:你的第二个评论正是我总结我的立场。当然,我可以阅读帮助页面和教程,但其中许多人都具有该语言的工作知识,并阅读了有经验的技术手册。毫无疑问,我们中有人能够提炼多年来从事'data.frame'和'data.table'工作的最实用的部分。我不想避免工作,只有经验丰富的程序员能够以较少的经验传递给我们什么? – remarkableearth

回答

7

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

查看http://datatable.r-forge.r-project.org/datatable-intro.pdf了解更多信息。

+2

它们在外观上只有相似之处。 –

+0

@Ellis,感谢您的链接。 – remarkableearth

+0

@ Ferdinand.kraft他们不是_similar_的功能? ;)但我同意,他们有许多差异 –

47

虽然这是一个很宽泛的问题,如果有人是新的R这可能导致混淆和区别可能会丢失。

所有data.table s为也data.frame秒。松散地说,您可以将data.tables视为具有额外功能的data.frames。

data.frame是碱R的一部分。

data.table是延伸data.frames一个包。其最显着的特点之一是速度和清晰的语法。

但是,该语法糖不同于数据帧的标准R语法,而对于未经训练的眼睛难以一目了然地辨别。因此,如果您阅读了代码段,并且没有其他上下文来指示您正在使用data.tables并尝试将代码应用于data.frame,则可能会失败或产生意外的结果。 (您正在使用d.t的工作,除了library/require通话清晰的赠品是赋值运算符:=这是唯一的DT的存在)

与所有他这样说,我觉得很难实际上欣赏data.table的美丽没有遇到data.frame的缺点。 (例如,请参阅@ eddi答案的前3个项目符号)。换句话说,我非常建议学习如何使用和操作data.frames然后再转到data.table s。

26

在我每一天的生活浮现在脑海中的一些区别是(排名不分先后):

  • 不必在遍地指定data.table名(导致笨拙的语法和愚蠢的错误)表达式(在另一面有时候我会想念名称的TAB完成)
  • 更快,非常直观by操作
  • 没有更多的打字df,忘记大df怎么回事后,疯狂地按下Ctrl-C(也导致几乎决不使用head
  • 更快,更好的文件与fread
  • 包装中还提供了其他一些实用功能,如%between%rbindlist,让生活更美好
  • 更快的一切,因为有很多data.frame操作的复制读书整件事不必要
+0

upvoted第三个原因... – eflores89

相关问题