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)) 
)

Data$Days IIUC、引数としておよびを使用して切片関数を呼び出すと、Data$Diffベクトル全体が毎回関数に渡されます。Daysおよびを使用Diffすると、の現在のサブセットに対応する値のみDataが使用されます。

于 2013-02-15T10:47:16.480 に答える