我正在尝试使用 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)
)
我认为我调用函数变量的方式有问题,但我不知道在哪里...... 欢迎任何帮助。 一切顺利, 文森特
最佳答案
我认为你应该这样调用ddply
:
ddply(Data,.(Genotype,T), summarise,
InterDays=(intercept(Days,Diff))
)
IIUC,如果您使用 Data$Days
和 Data$Diff
作为参数调用拦截函数,则每次都会将整个向量传递给该函数。对于 Days
和 Diff
,仅使用与 Data
当前子集相对应的值。
关于r - 在 ddply 中应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892910/