分組數據時,ddply是推還是拉?即,它是否涉及數據框上的許多傳遞,還是僅涉及一個?ddply:推或拉?
回答
如果你看看代碼,你看到函數的一般結構:
function (.data, .variables, .fun = NULL, ..., .progress = "none",
.drop = TRUE, .parallel = FALSE)
{
.variables <- as.quoted(.variables)
pieces <- splitter_d(.data, .variables, drop = .drop)
ldply(.data = pieces, .fun = .fun, ..., .progress = .progress,
.parallel = .parallel)
}
<environment: namespace:plyr>
因此,它基本上重新排列的格式,更容易使用的變量,然後將數據分解成塊,然後在這些作品上使用ldply。這些片段由功能splitter_d生成。件實際上比列表更復雜 - 它是指向原始數據和索引列表的指針。無論何時請求列表中的一部分,它都會查找匹配的索引並提取相應的數據。這避免了多個數據副本的漂移。你可以看到如何使用getAnywhere("splitter_d")
或plyr:::splitter_d
。
ldply在每一條數據上傳遞一次。之後,它將所有內容組合到一個數據框中。其實,在幫助ldply的文件寫的是:
所有plyr功能使用相同的 拆分申請,結合策略:他們 輸入分割成更簡單的塊, 適用.fun每件,然後 將這些部分組合成一個單一的數據 結構。此功能按元素拆分列表 ,並將結果 組合成數據框。如果沒有 結果,那麼此函數將返回一個零行的數據幀和 列(data.frame())。
我自己也說不完。奇蹟,第一句話也可以在ddply的幫助頁面上找到。
Pieces實際上比列表更復雜 - 它是指向原始數據和_indices_列表的指針。無論何時請求列表中的一部分,它都會查找匹配的索引並提取相應的數據。這避免了多個數據副本的漂移。 – hadley 2010-11-16 17:24:19
@Hadley:thx糾正。我沒有真正瞭解整個源代碼。我會調整。 – 2010-11-16 17:33:06
- 1. git:擁有2個推/拉回購同步(或1推/拉和1拉同步)
- 2. git推(或拉)隨着本地歷史
- 3. JMS MessageConsumer的messageListener使推或拉?
- 4. 我應該先推或拉嗎?
- 5. 使用ddply cumsum
- 6. 玻推拉窗
- 7. Ajax - 推拉?
- 8. DDPLY分組錯誤
- 9. ddply連續亞組
- 10. 使用ddply轉儲
- 11. 推拉門動畫
- 12. GitHub推/拉錯誤
- 13. Github:推拉請求
- 14. 限制Git推/拉
- 15. SSH變化推拉
- 16. 數據拉和推
- 17. 自舉拉和推
- 18. 使用dplyr軟件包複製ddply? ddply太慢
- 19. 加權平均值與ddply是錯誤的(R,ddply)
- 20. 推拉技術使用Ajax或套接字
- 21. 推或拉近乎實時的自動化服務器?
- 22. 如何找出尚未推送或拉出的提交?
- 23. 推送或拉到Excel的報告數據
- 24. 拉,變基,推,在一個命令(或少數幾個)
- 25. 進度條沒有水銀版本控制顯示推或拉
- 26. 不能從自己的私人回購推(或拉)?
- 27. 使用ddply,而不是爲
- 28. ddply和分類函數
- 29. group by R,ddply with weighted.mean
- 30. 從ddply內中的R
我會說它分裂了數據,遍歷每一塊做它必須做的事情,並把它放在一起。你總是可以自己查看源代碼(嘗試'getAnywhere()',你需要它),或者等到hadley經過。 – 2010-11-16 06:30:06