2012-11-12 11 views
5

Mam listę i chcę użyć lapply() do obliczenia średniej jej elementów. Na przykład, na siódmej pozycji na liście mam:Jak zastosować funkcję średnią nad elementami listy w R

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

i moje wyjście powinno być:

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

Ale gdy używam lapply() jak poniżej wyniku będzie coś innego. Co powinienem zrobić?

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

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

jeśli użyjesz 'lapply' zamiast pojedynczego elementu listy, będziesz pobierał średnią z każdego elementu wektora. zamiast tego użyj 'lapply (list, mean)'. Używanie 'list' jako nazwy zmiennej jest złym pomysłem, ponieważ jest to ważna funkcja! – Justin

Odpowiedz

8

Aby uzyskać średnią z 7 elementu listy, wystarczy użyć mean(list[[7]]). Aby uzyskać średnią z każdego elementu listy, należy użyć lapply(list,mean). To naprawdę zły pomysł, aby zadzwonić na listę list.

+0

Dziękuję :) i zmienię nazwę również – hora

+0

@hora, jeśli uważasz, że ta odpowiedź dostarczyła Ci odpowiedni opis tego, czego szukałeś, możesz zaakceptować to jako poprawne, zaznaczając szary znacznik wyboru pod wynikiem . –

4

należy rozważyć użycie sapply zamiast 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 



Ponadto, warto przyjrzeć się opakowaniu plyr. This question radzi sobie także z wyjaśnianiem różnych * stosowanych funkcji

Powiązane problemy