2017-03-19 64 views
0

我有一個名爲「thalachbysite」的列表,列表中有4個列表,每個內部列表有幾百個項目。R函數不會打印列表中的單個項目的總和

我想每個內部列表的總和,所以我嘗試:

for (i in 1:length(thalachbysite)) { 
    sum(thalachbysite[[i]]) 
} 

我的輸出完全是空的,但 - 它接受,沒有錯誤或警告的輸入,但我依然黑屏。誰能解釋爲什麼?

回答

3

我可以看到爲什麼這是令人困惑的,但基本上,for循環返回NULL。所以,如果你把你的sum在一個循環中,你需要明確地打印或返回值,例如打印:

l <- list(x = 1:10, y = 11:20) 
for(i in 1:length(l)) {print(sum(l[[i]]))} 
[1] 55 
[1] 155 

這就是說 - 一個for循環不是在這種情況下,一個很好的解決方案。最好使用apply功能,如lapplysapply

lapply(l, sum) 
$x 
[1] 55 

$y 
[1] 155 

sapply(l, sum) 
    x y 
55 155