【问题标题】:coerce a multiple output in a new dataframe using ddply使用 ddply 在新数据帧中强制多个输出
【发布时间】:2011-10-28 14:29:48
【问题描述】:

我有这个功能:

> λ.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。 我必须将此函数应用于由因子 pond,habitat,treatment,date 组合定义的原始数据框 size 的不同子集,为此我使用了 ddply 函数:

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

问题是,通过这样做,我一次只能向新数据框 mle.λ 添加一列,而我需要向 mle.λ 添加四个新列,每个列用于 @ 的输出987654327@ 基本上是这样的:

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

到目前为止,我一直在为所需的每个输出编写不同的函数,但我想做一些代码经济...有没有办法一次性完成所有操作?

谢谢 磨砂

【问题讨论】:

    标签: r plyr


    【解决方案1】:

    由于您已经有了汇总函数,因此您不需要额外使用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
    

    【讨论】:

    • 真的很欣赏约翰,尽管他总是比我简单得多……但仍然需要在 R 路线上前进很多......
    猜你喜欢
    • 1970-01-01
    • 2019-08-07
    • 1970-01-01
    • 1970-01-01
    • 2021-08-25
    • 2020-04-15
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多