2016-06-30 79 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