2013-08-01 212 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

相關問題