2015-09-09 40 views
5

Vektörler içeren birkaç listeye sahibim ve tek bir liste almak istiyorum; bu elemanlar, ilk listelerin vektörlerinin ortalama vektörleridir.Birden çok listeden vektörlerin ortalaması nasıl hesaplanır?

Örnek: iki başlangıç ​​listeleri

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

ve I lapply ile denenmiş ve llply

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

elde etmek istiyorum, ama her zaman her liste vektörü ortalamasını elde sonunda .

+1

'mapply (function (a, b) colMeans (rbind (a, b)), LT1, LT2, KOLAYLAŞTIRIN = F)' – jenesaisquoi

cevap

2

Map() öğelerini birlikte cbind() birlikte kullanabilir, ardından oluşan listede rowMeans() öğesini çalıştırabilirsiniz.

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

Ya lapply(Map(rbind, lt1, lt2), colMeans)

+0

size çok teşekkür ederim yardımcı olabilecek diğer yolu Çok, bu zaten çok yardımcı olur. Ek bir zorluğum var. İlk listelerim de bir listeye gömülü. Listeleri lapply dışında bu genel listeden geçirmenin bir yolu var mı (Map (rbind, lt [[1]], lt [[2]], ... lt [[n]])? – user34771

+0

Bu biraz Daha karmaşık ve belki de yeni bir soru olarak yayınlamak daha iyi olabilir. –

+0

Cevabı buldu: lapply (Küçült (işlev (x, y) Harita (rbind, x, y), lt), colMeans) # lt = liste (LT1, LT2) – user34771