我正在尝试使用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)
)
我认为我调用函数变量的方式有问题,但我看不到... 欢迎任何帮助。 祝一切顺利, 文森特
答案 0 :(得分:2)
我认为你应该以这种方式致电ddply
:
ddply(Data,.(Genotype,T), summarise,
InterDays=(intercept(Days,Diff))
)
IIUC,如果用Data$Days
和Data$Diff
作为参数调用截取函数,则每次都会将整个向量传递给函数。使用Days
和Diff
时,只会使用与Data
的当前子集相对应的值。