我想测试一下我的数据是否有意义,所以我想比较一下我的数据集的两列。它与距离有关,因此我将Yn - Yn-1与Xn - Xn-1进行比较。
x<-c(1,2,3,0,2,0,5,8,2,10,2,0,1,0)
CSx<-cumsum(x)
y<-c(1,1.5,2,2,3,3,2,6,1,8,9,10,11,12)
test1<-as.data.frame(cbind(x, CSx, y))
bla<-NA
for (n in 2:length(test1[,1])){
j<-test1[n,2]
k<-test1[n-1,2]
l<-test1[n,3]
m<-test1[n-1,3]
ifelse((l-m)/(j-k)>1, bla<-append(bla, "WRONG!!!"), bla<-append(bla, "ok"))
}
因此,我希望length(test1)
值为NA
,第一个为> length(2:length(test1[,1]))
# [1] 13
> bla
# [1] NA "ok" "ok" "ok" "ok" "ok"
# [7] "ok" "ok" "ok" "WRONG!!!" "ok" "WRONG!!!"
> length(bla)
# [1] 12
,然后是13个计算值,在这种情况下为2到14。我只得到12:
{{1}}
我想这有一个完全合理且简单的原因,但我完全感到困惑。
答案 0 :(得分:1)
如果您在for循环中放置此命令cat(n," ",(l-m)/(j-k),"\n")
,则会看到n
等于4 {6} (l-m)/(j-k)
等于NA
,因为{{ R}中的{}为0/0
因此函数NaN
不起作用。您必须处理NA值。
例如:
ifelse