對於一個輸入數據幀有沒有一種方法可以並行運行循環的彙總函數?
input<-data.frame(col1=seq(1,10000),col2=seq(1,10000),col3=seq(1,10000),col4=seq(1,10000))
我要運行存儲在另一個數據幀中的下面的摘要
summary<-data.frame(Summary_name=c('Col1_col2','Col3_Col4','Col2_Col3'),
ColIndex=c("1,2","3,4","2,3"))
#summary
Summary_name ColIndex
Col1_col2 1,2
Col3_Col4 3,4
Col2_Col3 2,3
我有以下函數來運行這些聚集體
loopSum<-function(input,summary){
for(i in seq(1,nrow(summary))){
summary$aggregate[i]<-sum(input[,as.numeric(unlist(str_split(summary$ColIndex[i],',')))])}
return(summary)
}
我要求是僅在並行中運行loopSum中使用的總和,即,我希望一次運行所有總結,從而縮短總時間ta ken用於創建摘要的函數。有沒有辦法做到這一點?
我的實際情況要求我爲摘要data.frame中的每個Summary_name創建數百列的彙總統計信息,我正在尋找最優化的方法來執行此操作。任何幫助深表感謝。
你真的只是拿總和的列嗎?如果是這樣,你會更好地分別總結每列,然後將這些總和加起來。很難知道你要做什麼,因爲'loopSum'函數不起作用。我猜你有一個你沒有包含的自定義'str_split'。 –
當你說'loopSum'不工作,我希望它不會拋出一個錯誤,但沒有返回任何值,(它的工作對我來說)我已經添加了返回現在你可以檢查,並感謝你的colSums的想法,但我的問題在這裏是不是總和不夠快,而是我必須連續運行很多次,我正在尋找一種方法,我可以並行運行所有的總和,理想情況下應該花費更少的時間,一個接一個地運行它們。 – ghub24