2012-11-12 36 views
5

Tôi có danh sách và tôi muốn sử dụng lapply() để tính giá trị trung bình của các thành phần của nó. Ví dụ, đối với mặt hàng thứ bảy trong danh sách tôi có:Cách áp dụng hàm trung bình trên các thành phần của danh sách trong R

>list[[7]] 
[1] 1 1 1 1 1 1 1 1 1 1 

và đầu ra của tôi nên là:

> mean(temp[[7]][1:10]) 
[1] 1 

Nhưng khi tôi sử dụng lapply() như dưới đây kết quả sẽ là cái gì khác. Tôi nên làm gì?

> lapply(list[[7]][1:10],mean) 
[[1]] 
[1] 1 

[[2]] 
[1] 1 
. 
. 
. 
[[10]] 
[1] 1 
+2

nếu bạn sử dụng 'lapply' trên một phần tử trong danh sách, bạn sẽ lấy giá trị trung bình của mỗi phần tử của vectơ. sử dụng 'lapply (danh sách, trung bình)' thay thế. Ngoài ra, sử dụng 'list' như một tên biến là một ý tưởng tồi vì nó là một hàm quan trọng! – Justin

Trả lời

8

Để lấy giá trị trung bình của phần tử thứ 7 của danh sách, chỉ cần sử dụng mean(list[[7]]). Để lấy giá trị trung bình của từng phần tử trong danh sách, hãy sử dụng lapply(list,mean). Và đó là một ý tưởng thực sự tồi khi gọi danh sách của bạn list.

+0

Cảm ơn bạn :) và tôi cũng sẽ đổi tên là – hora

+0

@hora nếu bạn cảm thấy câu trả lời này cung cấp cho bạn mô tả đầy đủ về những gì bạn đang tìm kiếm, vui lòng chấp nhận nó bằng cách kiểm tra dấu kiểm màu xám bên dưới điểm số . –

4

xem xét sử dụng sapply thay vì lapply.

# sample data 
a<- 1:3 
dat <- list(a, a*2, a*3) 

# sapply gives a tidier output 
> sapply(dat, mean) 
[1] 2 4 6 

> lapply(dat, mean) 
[[1]] 
[1] 2 

[[2]] 
[1] 4 

[[3]] 
[1] 6 



Ngoài ra, bạn có thể muốn xem xét gói plyr. This question cũng làm tốt công việc giải thích các chức năng * áp dụng khác nhau

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