0

私は経験の浅い R プログラマーで、書いたコードを機能させようとしています。これはおそらく基本的な問題です。このコードで、ベクトル内の前の値に対して 1 つの値をチェックし、特定のしきい値よりも大きい場合は、そのベクトルのどの要素がこの基準を満たすかを返すようにします。1件でも見つかったらやめてほしい。

現在、私のコードは半分機能していますが、ベクトル全体を通過し、最後に到達すると NA である a[i+1] をチェックし、エラーメッセージを表示します。

testdata<-c(0,0.1,0.2,0.3,0.45,0.5,0.6,0.7,0.8,0.9,1.0)

MLD<-function(a,...){
  x<-NULL
  y<-NULL
  for(i in seq(along=a)){
    if(a[i+1]>=a[i]+0.125)
    {x=c(x,a[i+1]); y=which(a==x); print(y)}
  }
}


try(MLD(testdata),silent=TRUE) # code finds right element
MLD(testdata) # but continues looking until it runs out of data

break()またはどこかが必要なのはわかっていますが、stop()うまくいかないようです。助けていただければ幸いです。

4

1 に答える 1

2

コードを次のように単純化できます。

which(diff(testdata) > 0.125) + 1

関数に入れることができるもの:

MLD = function(a) which(diff(a) > 0.125) + 1
于 2013-09-19T11:15:21.520 に答える