2017-03-09 1 views
0

私は、nlsの係数を含むデータフレームのリストを組み立てました。これはカスタムブートストラップ(実際にはバギング)メソッドの一部です。私は、データフレーム内の各パラメータの平均を計算したいと思います。R:リストに含まれるデータフレームの要素の平均を取る

XDATAとYDATAをサンプリングした後、リストを含むループに取り込まれる:

nls(ydata ~ A*cos(2*pi*((xdata-x_0)/z))+M,start=list(A=4,M=-7,x_0=-10,z=30)) 
fitdata = summary(fit)$coefficients 
fitresults[[i]] = fitdata 

以下のようにリストは、100のデータフレームが含まれています。私は計算したい

 Estimate Std. Error t value  Pr(>|t|) 
A 3.945959 0.1729441 22.816381 3.440064e-14 
M -8.349697 0.1656195 -50.414926 5.920106e-20 
x_0 -3.677582 0.5717355 -6.432313 6.194560e-06 
z 33.680613 1.1314373 29.767989 4.158598e-16 

リスト全体の最初の列の各要素の平均。したがって、見積もりの​​A、M、x_0、およびz。

私はdply関数で少し遊んだことがありますが、私はそれを得ることができません。

多くの感謝!

+0

私はdplyr'と ''に探してお勧め最初の列を取得するために多くの可能性は、一つは、リスト上sapplyに、このようなものでありますが、箒。まず、インデックスカラムを持つ 'data_frame'とブートストラップのサンプルインデックスのリストであるSampleカラムを生成します。 data_frameを 'rowwise'でグループ化し、mutateを使用してフィットモデルで新しい列を作成します。 'broom'の' tidy'関数を使って簡単に要約できるdata_frameを生成します。 –

+0

また、リスト内の各データフレームを変更するには、変数名の列を含める必要があります。そして 'do.call(rbind、LIST)'を使ってそれらを一緒にデータフレームに結合します。これはそれほどエレガントではありませんが、現在のコードに適しています。 –

答えて

0

私の例を再現するために、ただ2つのデータフレームを含むmylistというリストを作成します。その後、

set.seed(1) 
mylist <- list(list1 = data.frame(matrix(rnorm(16), 
           ncol = 4, 
           nrow = 4, 
           dimnames = list(row = c("A", "M", "x_0", "z"), 
               column = c("Estimate", 
                  "Std.Error", 
                  "t_Value", 
                  "Pr(<|t|)")))), 

      list2 = data.frame(matrix(rnorm(16), 
            ncol = 4, 
            nrow = 4, 
            dimnames = list(row = c("A", "M", "x_0", "z"), 
                column = c("Estimate", 
                   "Std.Error", 
                   "t_Value", 
                   "Pr(<|t|)"))))) 

mylist 

$list1 
     Estimate Std.Error t_Value Pr...t.. 
A -0.6264538 0.3295078 0.5757814 -0.62124058 
M 0.1836433 -0.8204684 -0.3053884 -2.21469989 
x_0 -0.8356286 0.4874291 1.5117812 1.12493092 
z 1.5952808 0.7383247 0.3898432 -0.04493361 

$list2 
     Estimate Std.Error  t_Value Pr...t.. 
A -0.01619026 0.91897737 0.61982575 -0.4781501 
M 0.94383621 0.78213630 -0.05612874 0.4179416 
x_0 0.82122120 0.07456498 -0.15579551 1.3586796 
z 0.59390132 -1.98935170 -1.47075238 -0.1027877 

と::

result <- data.frame(Estimates = apply(sapply(mylist, function(x) x[, "Estimate"]), 1, mean)) 
rownames(result) <- c("A", "M", "x_0", "z") 

result 
     Estimates 
A -0.321322037 
M 0.563739767 
x_0 -0.007203709 
z 1.094591062 
+0

こんにちは!ありがとう。これは 'Estimate'列の各行の平均を生成しますか? –

+0

yes、 'sapply(mylist、function(x)x [、" Estimate "])'は、 'apply'関数内の2番目のステップで使用できるすべての' Estimate'カラムを抽出して、すべての手段を取得します。 。 – Codutie

+0

私はこれが質問が何を求めているとは思わない。私は、各データフレームの係数の平均ではなく、すべてのデータフレームにわたってA、M、x_0、およびzの平均を求めていると思います。 – Kristofersen

関連する問題