2016-07-19 7 views
1

の意味を取得するには、リスト上の関数を適用。私はそれを「ID」で分割し、リストの約1,400の異なる構成要素をもたらしました(それぞれは複数の種観察を含む異なる場所です)。R:使用して、私はこのようになりますリストを持っている複数の値

    ID Species 2013  2008  2003 
      AA 1501106  11 1751.047 1504.080 1580.337  
      AA 1501106  11 1856.224 1678.837 1592.824  
      AA 1502114  11 1766.527 1519.468 1647.180  

だから今、私は個々のコンポーネントや要約を(選択することができることを知っては)私の平均値、中央値を与える、など2013年、2008年および2003年、その特定の要素のそれぞれの、非常に多くの部品となります私が望む何

をソートする混乱は、使用して、年間のすべてのコンポーネント(そう2013年、2008年と2003年の平均)

の平均値を得ることができるようにすることです

apply(plot_list,mean) 

は機能しません。リストが単なる列ではないからです。

私はこの問題を解決する方法上の任意のアイデア? 3つの最後の列がためのものである5列、:これは私がはmyListと呼ばれるあなたのリストには、同じ構造を持つdata.framesのリストであることを前提としてい

lapply(myList, FUN=function(i) sapply(i[, 3:5], mean)) 

:次はどう

+0

データ構造、あなたはより多くのdata.frame、リストのようなルックスを見せています。これらのデータフレームのリストはありますか?その場合、構造体の独自の関数計算手段を作成し、関数を使ってapply(またはリストにある場合はlapply)を使用することができます。 –

答えて

0

それは平均を計算したいものです。

これは、各要素は我々がlapplyしかし

lapply(myList, function(x) colMeans(x[3:5])) 

、より良いアプローチかもしれないとlistをループした後colMeansを使用することができます長さ3

+0

これは完璧に機能しました!それは私がdata.framesのリストを持っていたことをクリックしなかった。手伝ってくれてどうもありがとう – isabelnt

0

のベクトルであるリストを返します。 dplyr

library(dplyr) 
bind_rows(myList) %>% 
      group_by(ID, Species) %>% 
      summarise_each(funs(mean)) 
のいずれかを使用して、単一のデータセットに関数を適用すること

またはdata.table方法

library(data.table) 
rbindlist(myList)[, lapply(.SD, mean), by = .(ID, Species)] 
関連する問題