当引用NA时,在R中停止循环

时间:2013-09-19 11:07:58

标签: r

我是一位没有经验的R程序员,试图编写一段我写过的代码。这可能是一个基本问题。我希望此代码在向量中检查其前一个值的一个值,如果它大于某个阈值,则返回该向量上的哪个元素满足此条件。一旦找到一个案例,我就想停下来。

目前我的代码半功能正如我所喜欢的那样,但是它遍历整个向量,一旦到达结尾,它会检查一个[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(),但我似乎无法解决这个问题,我希望你能帮助我。

1 个答案:

答案 0 :(得分:2)

您可以将代码简化为:

which(diff(testdata) > 0.125) + 1

你可以放入一个功能:

MLD = function(a) which(diff(a) > 0.125) + 1