2016-06-30 45 views
0

我想知道有序向量(仅包含正元素)的所有元素之间的所有可能(正向)差异。for循环导致意想不到的结果

为此,我创建了另一个向量,我让它使用for循环(见代码1)。它没有导致期望的结果“1 4 6 3 5 2”,而是导致“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])) 

我有点不解......

回答

1

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

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

而不是

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

事实上,我很尴尬。谢谢! – koteletje

2

这可以用更简洁地实现:

as.vector(dist(a)) 
+0

谢谢你的功能,本杰明。 – koteletje