2013-04-22 84 views
1

這裏更好意味着更快或更易於閱讀/更短的語法,也可能意味着該命令在data.table中甚至不可行。當plyr比data.table更好嗎?

我不使用plyr很多,並想知道是否有案件,當我應該。因爲我沒有使用它很多,我能想出的唯一例子是rbind.fill,據我所知沒有data.table模擬和我見過的所有其他示例在plyrdata.table中均已完成,後者更快,更容易閱讀/更緊湊。

+4

這太寬了。 – 2013-04-22 18:30:25

+3

** plyr **不會(通常)比** data.table **更快。有些人(比如我自己)發現前者的語法比後者更直觀和可讀。但那只是一個主觀選擇。 – joran 2013-04-22 18:30:55

+0

@Arun thx,我會看看這些功能。 'plyr'對'data.frame'做的更好嗎? – eddi 2013-04-22 18:40:14

回答

12

它們是不同目的的不同軟件包。一個不能替代另一個,儘管它們有一小部分功能重疊。

下面是每個包的簡要總結,從包裝自己:

的plyr包是一組的,在R.實施拆分申請,結合圖案清晰一致的工具,這是一個數據分析中非常常見的模式:通過將問題分解成小塊來解決複雜問題,對每個塊做一些事情,然後再將這些結果重新組合起來。

data.table ...提供了快速的子集,快速分組,快速更新,快速有序的連接和列表列在很短的和靈活的語法,爲更快的發展。它受到R中A [B]語法的啓發,其中A是矩陣,B是2列矩陣。

它們重疊是在「快分組」這plyr也確實通過拆分data.frames,上個工作,並把它們重新組合成一個單一的data.frame。 data.table還有許多其他功能可以使數據框架像結構一樣快速運行; plyr具有將分裂應用組合範例應用於其他數據結構(例如列表和數組(作爲輸入和輸出))的特徵。

實際上,它們是兩個不同的工具,它們碰巧有一個重疊的小區域,它們解決了相同的問題域,但每個工具的作用遠不止於此,如果您想要/需要該附加功能,那麼該包應該使用。

+0

聽起來像你在說'plyr'做一些'data.table'不能做的事情 - 這正是我要找的 - 你能舉個例子還是兩個?謝謝 – eddi 2013-04-22 18:37:42

+0

'library(「plyr」);例子(「llply」)'或者真的,除了'ddply'之外的'** ply'函數。 – 2013-04-22 18:42:39

+0

'llply'似乎不是一個很好的用於這個目的(據我所知,它在'lapply'已經做了什麼之上做的很少),但其他人做的,我會看看這些功能並可能在此之後重新提出這個問題,現在可以這樣做,謝謝 – eddi 2013-04-22 19:09:33