2015-09-09 11 views
5

Ho diverse liste contenenti vettori e vorrei ottenere una lista singola, quali elementi sono i vettori medi dei vettori delle liste iniziali.Come calcolare la media di vettori da più elenchi?

Esempio: due liste iniziali

lt1 <- list(a = c(1,2,3), b = c(2,5,10)) 
lt2 <- list(a = c(3,4,5), b = c(4,5,2)) 

e vorrei ottenere

lt12 <- list(a = c(2,3,4), b = c(3,5,6)) 

ho provato con lapply e llply, ma finisco sempre per ottenere la media del vettore di ogni lista .

+1

'mapply (function (a, b) colMeans (rbind (a, b)), LT1, LT2, semplificare = F)' può aiutare – jenesaisquoi

risposta

2

È possibile utilizzare Map() a cbind() i vettori insieme, quindi eseguire rowMeans() nell'elenco risultante.

lapply(Map(cbind, lt1, lt2), rowMeans) 
# $a 
# [1] 2 3 4 
# 
# $b 
# [1] 3 5 6 

O il contrario con lapply(Map(rbind, lt1, lt2), colMeans)

+0

Grazie molto molto, questo aiuta già molto. Ho una difficoltà aggiuntiva. Anche le mie liste iniziali sono incorporate in una lista. C'è un modo per passare le liste da questa lista globale diversa da quella lapply (Map (rbind, lt [[1]], lt [[2]], ... lt [[n]])? – user34771

+0

Sembra un po ' più complesso e forse potrebbe essere meglio postare come una nuova nuova domanda: –

+0

Ho trovato la risposta: lapply (Riduci (funzione (x, y) Mappa (rbind, x, y), lt), colMeans) # con lt = lista (LT1, LT2) – user34771

Problemi correlati