我想编写一个函数来比较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)