2011-10-28 15 views
5

を使用して新しいデータフレーム内の複数の出力を強制:は、私はこの機能を持っているddply

> λ.est <- function(x){ 
      mle.optim <- mle2(paretoNLL,start=list(λ=-0.7),data=list(x=x),trace=TRUE) 
      return(summary(mle.optim)@coef[1,1:4]) 
      } 

分布をフィットし、パラメータ推定値、STDをretunsことは。エラー、z値、およびp。 私はddply機能を使用している要因pond,habitat,treatment,dateの組み合わせによって定義された私の元のデータフレームsizeの異なるサブセットにこの機能を適用する必要があり、これを行うには:

> mle.λ <- ddply(size, .(pond,habitat,treatment,date), 
    summarise, λ=λ.est(x=mass.wei)) 

問題が行うことによって、ということです

> mle.λ 
     pond habitat treatment date estimate std. error z value Pr(z) 
     - -  -  -  -  -   -  - 
     - -  -  -  -  -   -  - 
     - -  -  -  -  -   -  - 
     - -  -  -  -  -   -  - 
     - -  -  -  -  -   -  - 
     ... 
:これは、私が唯一の新しいデータフレーム mle.λに1列の時間を追加することができ、私は次のようになり mle.λ 4新しい列、 λ.est 基本的には何かの出力ごとに1つに追加する必要がありwereas

これまでのところ私必要な出力ごとに異なる関数を書いていますが、私はいくつかのコード経済をしたいと思います。

おかげ マッテオ

答えて

5

すでに要約機能を持っているので、あなたはさらにsummarise機能を使用する必要はありません。さらに、で、一度に複数の出力を返すことができます。本当にジョンにappriciated

n = 20 
set.seed(12345) 
data = data.frame(cbind(pond=1:2, habitat=1:3, value = rnorm(n))) 
> ddply(data, .(habitat, pond), function(x) summary(x$value)) 
    habitat pond Min. 1st Qu. Median Mean 3rd Qu. Max. 
1  1 1 0.3706 0.5318 0.6078 0.6767 0.7528 1.1210 
2  1 2 -0.9193 -0.6864 -0.4535 -0.1853 0.1817 0.8169 
3  2 1 -0.8864 -0.5013 -0.1162 -0.1322 0.2448 0.6059 
4  2 2 -0.2762 0.1550 0.4095 0.3131 0.5675 0.7095 
5  3 1 -0.7505 -0.5173 -0.2842 -0.3813 -0.1967 -0.1093 
6  3 2 -1.8180 -1.0750 -0.3316 -0.1107 0.7429 1.8170 
+0

を、私も...まだに多くのことを行進しなければならないよりもはるかに簡単いつものように:何の例のデータがないので、ここではこれを行う方法を明確に示さなければならないものですRルート.. – matteo

+0

素晴らしい!私はそれが助けてうれしいです。 –

関連する問題