有没有办法将ddply
与一个返回多个值的函数一起使用,并将这些值组合在一个数据帧的不同列中?我创造了一个虚构的例子来说明我的意思。
#random data
ID <- rep(paste0("ID", 1:10), each=10)
x <- c(1:10)
y <- x+rnorm(100)
df<-data.frame(ID=ID, x=x,y=y)
#function that returns two values
myfunc <- function(y=y, x=x){
m <- summary(lm(y~x))
c1<-m$fstat[1]
c2<-m$coefficients[1]
c(c1,c2)
}
ddply(df, .(ID), summarize, myfunc(y=y,x=x))
目前,输出如下:
ID ..1
1 ID1 69.477838332
2 ID1 -0.279584776
3 ID10 396.792689197
4 ID10 -0.359578656
我想得到的是:
ID c1 c2
1 ID1 69.477838332 -0.279584776
2 ID10 396.792689197 -0.359578656
我知道我可以更改ddply的输出以获得所需的结果,但我想知道我的函数或ddply调用中是否有任何可以改变的东西可以提供所需的输出。 谢谢你的帮助!