Por que "vetorizar" esse loop R simples dá um resultado diferent

alvez uma pergunta muito idiot

Estou tentando "vetorizar" o seguinte loop:

set.seed(0)
x <- round(runif(10), 2)
# [1] 0.90 0.27 0.37 0.57 0.91 0.20 0.90 0.94 0.66 0.63
sig <- sample.int(10)
# [1]  1  2  9  5  3  4  8  6  7 10
for (i in seq_along(sig)) x[i] <- x[sig[i]]
x
# [1] 0.90 0.27 0.66 0.91 0.66 0.91 0.94 0.91 0.94 0.63

Eu acho que é simplesmentex[sig] mas o resultado não corresponde.

set.seed(0)
x <- round(runif(10), 2)
x[] <- x[sig]
x
# [1] 0.90 0.27 0.66 0.91 0.37 0.57 0.94 0.20 0.90 0.63

O que há de errado

Observaçã

Obviamente, a partir da saída, vemos que ofor loop ex[sig] são diferentes. O significado deste último é claro: permutação; portanto, muitas pessoas tendem a acreditar que o loop está apenas fazendo coisas erradas. Mas nunca tenha tanta certeza; pode ser um processo dinâmico bem definido. O objetivo destas perguntas e respostas não é julgar o que é correto, mas explicar por que elas não são equivalentes. Espero que ele forneça um estudo de caso sólido para entender a "vetorização".

questionAnswers(4)

yourAnswerToTheQuestion