如何计算两个向量一起增加或减少的时间百分比

Geo*_*rge 1 r

我想编写一个函数来比较R中两个向量的增量.函数返回两个向量一起增加或减少的次数的百分比.

我写了以下函数,我用向量测试了它:

x=c(1,3,5,6,7)
y=c(1,5,6,8,7)
Run Code Online (Sandbox Code Playgroud)

结果应该是0.75,但是当我打电话时correl(x,y)出现错误

Error in if ...missing value where TRUE/FALSE needed
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

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)
}
Run Code Online (Sandbox Code Playgroud)

jub*_*uba 10

我宁愿矢量化函数,例如这样:

diffx <- diff(x)
diffy <- diff(y)
sum(sign(diffx)==sign(diffy)) / length(diffx)
Run Code Online (Sandbox Code Playgroud)