принудительно использовать несколько выходных данных в новом фрейме данных, используя ddply - PullRequest
5 голосов
/ 28 октября 2011

У меня есть эта функция:

> λ.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.ошибка, значение z и p для моей модели.Я должен применить эту функцию к различным подмножествам моего исходного фрейма данных size, определяемым комбинацией фактора pond,habitat,treatment,date, и для этого я использую функцию ddply:

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

проблемазаключается в том, что, делая это, я могу добавить только один столбец за раз к новому фрейму данных mle.λ, тогда как мне нужно добавить к mle.λ четыре новых столбца, по одному для каждого из выходных данных λ.est, в основном то,выглядит так:

>  mle.λ
      pond habitat treatment date estimate std. error z value Pr(z)
       -    -        -       -      -        -         -      - 
       -    -        -       -      -        -         -      - 
       -    -        -       -      -        -         -      - 
       -    -        -       -      -        -         -      - 
       -    -        -       -      -        -         -      - 
      ...

До сих пор я писал разные функции для каждого необходимого вывода, но я бы хотел сэкономить немного кода ... есть ли способ сделать все это водин ход?

спасибо matteo

1 Ответ

5 голосов
/ 28 октября 2011

Поскольку у вас уже есть функция сводки, вам не нужно дополнительно использовать функцию summarise.Кроме того, позволяет возвращать более одного выхода одновременно.Поскольку нет примеров данных, вот тот, который должен четко продемонстрировать, как это сделать:

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
...