我目前運行的多個應用該是這樣的線路:提取lapply或mclapply導致
test=data.frame(t=seq(1,5,1),e=seq(6,10,1))
mean(apply(test,2,mean))
我想第二線轉換爲mclapply其作爲lapply產生相同的結果。我意識到我可以使用for循環從lapply語句中提取每個項目,然後在該向量上使用mean,但這會降低我嘗試通過使用mclapply來提高性能。問題是lapply和mcapply返回一個意味着無法使用的列表。我可以使用[[]]獲取實際值或測試$ t並測試$ e,但測試中的列數是可變的,並且通常超過1,000。必須有一個更簡單的方法來處理這個問題。基本上我想要得到這種說法的意思:
mclapply(test,mean,mc.preschedule=TRUE)
最好不生成新變量或使用for循環。該解決方案應該是相當於讓這句話的意思是:
lapply(test,mean)
使用mclapply會的目的,把6個小時的模擬到3個小時的模擬所以平均值(平均值(測試))優雅不會加速模擬。未列出的解決方案正是我需要的!非常感謝!現在我可以用mclapply替換lapply,並且將我的模擬時間縮短一半! – ProbablePattern 2010-08-31 21:42:46
「現在我可以用mclapply替換lapply,並將模擬時間縮短一半!」也許。記住並行化某些東西需要固定成本;線程需要啓動,等等。 – Vince 2010-08-31 21:56:05
是的,'mean(mean(testdf))'僅僅是爲了確定你沒有顯示的整體意思。我知道這是一個程式化的例子。很高興得到了幫助。 – 2010-08-31 21:57:56