2012-01-20 21 views
27

Me pregunto acerca de una manera elegante que permite sumar (o calcular una media) los valores numéricos de una lista. p.ej.Cómo sumar una lista numérica elementos

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

y desea obtener

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

o una media:

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

¿Qué salida quieres para esos? Puedo ver dos formas en que uno puede interpretar lo que pide y son diferentes. Para los dos cómputos de exmaple, indique cuál es el resultado esperado por favor. –

+3

En este caso de ejemplo, es simplemente 'con (x, a + b)' pero eso no se escala a muchos elementos, o elementos de diferentes tamaños o listas con elementos no numéricos. Como dijo Gavin: cuéntanos más sobre lo que estás haciendo. –

Respuesta

56

Puede utilizar Reduce aplicar sucesivamente una función binaria de elementos de una lista.

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