for循环导致意外结果

时间:2016-06-30 14:44:00

标签: r

我想知道有序向量的所有元素之间的所有可能(正)差异(仅包含正元素)。

为此,我创建了另一个使用for循环增长的向量(参见代码1)。它没有导致预期的结果" 1 4 6 3 5 2"但到了#12; 12"。当我应用代码2(这似乎等同于代码1 ......)时,我得到了所需的结果...有谁知道为什么下面的两个代码不会导致相同的结果?

代码1

a = c()
b = c(1,2,5,7)

for (i in (length(b)-1)) {

   a = unique(c(a,b[(i+1):length(b)] - b[i]))

}

代码2

a = c()
b = c(1,2,5,7)
i=1
a = unique(c(a,b[(i+1):length(b)] - b[i]))
i=2
a = unique(c(a,b[(i+1):length(b)] - b[i]))
i=3
a = unique(c(a,b[(i+1):length(b)] - b[i]))

我有点困惑......

2 个答案:

答案 0 :(得分:2)

这可以通过以下方式更简洁地完成:

as.vector(dist(a))

答案 1 :(得分:1)

一旦你知道它就会恨你自己。你需要

for (i in 1:(length(b)-1))

而不是

for (i in (length(b)-1))