2011-10-28 15 views
5

tôi có chức năng này:ép buộc một đầu ra nhiều trong một dataframe mới sử dụng 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]) 
      } 

phù hợp với sự phân bố và retuns dự toán tham số, std. lỗi, giá trị z và p cho mô hình của tôi. tôi phải áp dụng chức năng này để tập con khác nhau của khung dữ liệu ban đầu của tôi size xác định bởi một sự kết hợp của yếu tố pond,habitat,treatment,date, và để làm điều này tôi đang sử dụng các chức năng ddply:

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

vấn đề là, bằng cách thực hiện này, tôi chỉ có thể thêm một cột một thời gian để các khung dữ liệu mới mle.λ, wereas tôi cần phải thêm vào mle.λ bốn cột mới, một cho từng kết quả của λ.est về cơ bản cái gì đó giống như thế này:

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

Cho đến nay tôi đã viết một chức năng khác nhau cho mỗi đầu ra cần thiết, nhưng tôi muốn làm một số nền kinh tế mã ... là có cách nào để làm tất cả trong một đi?

nhờ matteo

Trả lời

5

Vì bạn đã có một hàm Tóm lại, bạn không phải sử dụng thêm các chức năng summarise. Hơn nữa, nó có thể trả lại nhiều hơn một đầu ra cùng một lúc. Kể từ khi không có dữ liệu Ví dụ, đây là một trong đó phải chứng minh rõ như thế nào để làm điều này:

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

thực sự appriciated John, như mọi nhiều hơn đơn giản tôi mặc dù ... vẫn phải diễu rất nhiều trên Tuyến đường .. – matteo

+0

Tuyệt vời! Tôi rất vui vì nó đã giúp. –

Các vấn đề liên quan