2015-09-09 25 views
5

Ich habe mehrere Listen mit Vektoren und ich möchte eine einzige Liste erhalten, welche Elemente die Mittelvektoren der Vektoren der Ausgangslisten sind.Wie berechnet man den Mittelwert von Vektoren aus mehreren Listen?

Beispiel: Zwei Anfangslisten

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

Und ich würde

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

Ich habe versucht, mit lapply und llply erhalten möchte, aber ich habe immer den Mittelwert des Vektors jeder Liste zu erhalten am Ende .

+1

'mapply (function (a, b) colMeans (rbind (a, b)), LT1, LT2, SIMPLIFY = F)' kann helfen – jenesaisquoi

Antwort

2

Sie könnten Map() bis cbind() die Vektoren zusammen verwenden, dann rowMeans() auf der resultierenden Liste ausführen.

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

Oder andersrum mit lapply(Map(rbind, lt1, lt2), colMeans)

+0

Thank you very viel hilft das schon sehr. Ich habe eine zusätzliche Schwierigkeit. Meine anfänglichen Listen sind ebenfalls in eine Liste eingebettet. Gibt es eine Möglichkeit, die Listen von dieser globalen Liste anders als lapply zu übergeben (Map (rbind, lt [[1]], lt [[2]], ... lt [[n]])? – user34771

+0

Das klingt ein bisschen komplexer und vielleicht könnte es besser sein, als eine andere neue Frage zu posten. –

+0

Ich fand die Antwort: lapply (Reduzieren (Funktion (x, y) Karte (rbind, x, y), lt), colMeans) # mit lt = Liste (lt1, lt2) – user34771

Verwandte Themen