使用for的奇怪输出长度

时间:2014-03-07 11:48:55

标签: r for-loop

我想测试一下我的数据是否有意义,所以我想比较一下我的数据集的两列。它与距离有关,因此我将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}}

我想这有一个完全合理且简单的原因,但我完全感到困惑。

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