我是一位没有经验的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()
,但我似乎无法解决这个问题,我希望你能帮助我。
答案 0 :(得分:2)
您可以将代码简化为:
which(diff(testdata) > 0.125) + 1
你可以放入一个功能:
MLD = function(a) which(diff(a) > 0.125) + 1