2016-06-30 3 views
0

Я хочу знать все возможные (положительные) различия между всеми элементами упорядоченного вектора (содержащие только положительные элементы).for loop приводит к неожиданному результату

Для этого я создал еще один вектор, который я позволю расти с помощью цикла 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

Смежные вопросы