在ddply中应用函数

时间:2013-02-15 10:41:04

标签: r

我正在尝试使用ddply应用分组功能。 我的数据看起来像这样:

https://echange-fichiers.inra.fr/get?k=b1jD63CWkT93hDsbZ0g

以下函数计算y = 0

的x值
intercept=function (x,y){

    if (length(y[y==0])==0){
      x1=min(x[y >0])
      y1=min(y[y >0])

      x2=max(x[y <0])
      y2=max(y[y <0])

      p =(y2-y1)/(x2-x1)

      x0= -y1/p + x1

    }else{
      x0=x[y==0]

    }
return(x0)
}

然后我尝试用ddply组来应用它:

zzz=ddply(Data,.(Genotype,T), summarise
         InterDays=(intercept(Data$Days,Data$Diff)) 
)

我的语法一定是错的,因为它不会返回格式与:

相似的输出
zzz=ddply(DataAll,.(Genotype,T), summarise
         InterDays=mean(DataAll$Days) 
)

我认为我调用函数变量的方式有问题,但我看不到... 欢迎任何帮助。 祝一切顺利, 文森特

1 个答案:

答案 0 :(得分:2)

我认为你应该以这种方式致电ddply

ddply(Data,.(Genotype,T), summarise,
         InterDays=(intercept(Days,Diff)) 
)

IIUC,如果用Data$DaysData$Diff作为参数调用截取函数,则每次都会将整个向量传递给函数。使用DaysDiff时,只会使用与Data的当前子集相对应的值。