2

我正在尝试使用 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) 
)

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

4

1 回答 1

2

我认为你应该ddply这样称呼:

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

IIUC,如果您使用Data$Days 和Data$Diff作为参数调用拦截函数,则每次都将整个向量传递给函数。使用DaysDiff,只使用对应于当前子集的值Data

于 2013-02-15T10:47:16.480 回答