2015-09-09 20 views
5

Tôi có một số danh sách chứa vectơ và tôi muốn lấy một danh sách duy nhất, các phần tử nào là các vectơ trung bình của các vectơ của các danh sách ban đầu.Cách tính giá trị trung bình của vectơ từ nhiều danh sách?

Ví dụ: Hai danh sách ban đầu

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

Và tôi muốn để có được

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

Tôi đã thử với lapply và llply, nhưng tôi luôn luôn kết thúc việc thu thập giá trị trung bình của vector của mỗi danh sách .

+1

'mapply (function (a, b) colMeans (rbind (a, b)), lt1, LT2, đơn giản hóa = F) 'có thể giúp – jenesaisquoi

Trả lời

2

Bạn có thể sử dụng Map() đến cbind() các vectơ cùng nhau, sau đó chạy rowMeans() trên danh sách kết quả.

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

Hoặc theo cách khác với lapply(Map(rbind, lt1, lt2), colMeans)

+0

Cảm ơn bạn rất nhiều, điều này đã giúp rất nhiều. Tôi gặp khó khăn thêm. Danh sách ban đầu của tôi cũng được nhúng vào danh sách. Có cách nào để vượt qua danh sách từ danh sách toàn cầu này ngoài lapply (Bản đồ (rbind, lt [[1]], lt [[2]], ... lt [[n]])? – user34771

+0

Điều đó nghe có vẻ hơi phức tạp hơn và có lẽ có thể tốt hơn để đăng như một câu hỏi mới khác. –

+0

Tôi đã tìm thấy câu trả lời: lapply (Giảm (hàm (x, y) Bản đồ (rbind, x, y), lt), colMeans) # với lt = list (lt1, lt2) – user34771

Các vấn đề liên quan