1

R の 2 つのベクトルの増分を比較する関数を作成したいと考えています。この関数は、2 つのベクトルが一緒に増加または減少している回数の割合を返します。

次の関数を作成し、ベクトルでテストしました。

x=c(1,3,5,6,7)
y=c(1,5,6,8,7)

結果は0.75になるはずですが、呼び出すとcorrel(x,y)エラーが発生します

Error in if ...missing value where TRUE/FALSE needed

何か助けはありますか?

correl<-function(x,y){ 
  count = c()
  for (i in 1:length(x))
    if((((y[i+1]-y[i]) > 0) && ((x[i+1]-x[i]) > 0)) || (((y[i+1]-y[i]) < 0) && ((x[i+1]-x[i]) < 0))) 
      count <- union(count, c(i))
  print(length(count) / length(x)-1)
}
4

2 に答える 2

1

ループforは で終了しlength(x)y[i+1]値が含まれていないものがあります。でループを終了する必要がありますlength(x-1)

于 2013-04-07T19:51:15.650 に答える