2012-01-20 18 views
27

Zastanawiam się nad eleganckim sposobem pozwalającym sumować (lub obliczać średnią) wartości numeryczne listy. na przykładJak podsumować elementy listy numerycznej

x <- list(a = matrix(c(1,2,3,4), nc=2), b = matrix(1, nc=2, nr=2)) 

i chcesz uzyskać

x[[1]]+x[[2]] 

lub średni:

(x[[1]]+x[[2]])/2 
+2

Jakie wyjście chcesz dla nich? Widzę dwa sposoby interpretowania tego, o co prosisz, i są różne. W przypadku dwóch przykładowych obliczeń należy podać oczekiwaną wydajność wyjściową. –

+3

W tym przypadku jest to po prostu 'with (x, a + b)', ale nie skaluje się do wielu elementów lub elementów o różnych rozmiarach lub listach z elementami nienumerycznymi. Jak powiedział Gavin: powiedz nam więcej o tym, co robisz. –

Odpowiedz

56

Można użyć Reduce sukcesywnie zastosować funkcję binarną do elementów listy.

Reduce("+",x) 
    [,1] [,2] 
[1,] 2 4 
[2,] 3 5 

Reduce("+",x)/length(x) 
    [,1] [,2] 
[1,] 1.0 2.0 
[2,] 1.5 2.5