2017-04-26 61 views
3

我有12個data.frames(所有相同的形式)(總)的列表,我需要在科拉姆列表中的每一行的總和2.和元素

我「M搜索來總結整個列表中的元素這樣一個聰明的方法:

Total[[1]][,2] + Total[[2]][,2] + Total[[3]][,2] +..+Total[[12]][,2] 

科拉姆2具有70的長度,從而其結果應該是長的矢量70

希望別人知道自己的權利sapplylapplyapply功能代碼

+2

也許'減少( 「+」,lapply(總, 「[」,2))' –

+0

@docendodiscimus我因子評分的,準確的解。你爲什麼不把它作爲答案加入,你會從我這裏得到讚揚。 –

+2

如果其中一個答案解決了您的問題,請考慮單擊旁邊的複選標記來接受它。另見:http://stackoverflow.com/help/someone-answers – Cath

回答

11

這裏有一個選項:但是

Reduce("+", lapply(Total, "[[", 2)) 

注意,這不,因爲+潛力來港玩好。

下面是內置的數據爲例:

Reduce("+", lapply(list(iris, iris, iris), "[[", 2)) 
6

我們可以提取的data.framelist第二列使用後rowSums。如果有任何缺失值,na.rm=TRUE將負責處理。

rowSums(sapply(Total, `[[`, 2), na.rm = TRUE) 

或者另一種選擇是tidyverse

library(tidyverse) 
Total %>% 
     map(~.[[2]]) %>% 
     #or as suggested in the comments 
     #map(2) %>% 
     reduce(`+`) 
+0

@docendodiscimus我試着用你的'list(iris,iris,iris)',它對我來說工作正常 – akrun

+0

@docendodiscimus好的,當我測試時,我使用'[[',但不知何故,在這裏沒有更新。謝謝 – akrun

+1

@akrun對我來說,使用'['代替'[[''而不是'[[''導致了錯誤 – Jaap