0

我是一个没有经验的 R 程序员,试图让我写的一段代码工作。这可能是一个基本问题。我希望此代码对照向量中的前任检查一个值,如果它大于某个阈值,则返回该向量上的哪个元素满足此标准。一旦找到一个案例,我希望它停止。

目前,我的代码可以按我的意愿运行,但它会遍历整个向量,一旦到达末尾,它会检查 a[i+1] ,它是 NA 并给我一条错误消息。

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 回答