компилятор из ключевого слова в подсказку об отсутствии псевдонимов блоков памяти между тремя массивами.

жно, очень тупой вопрос.

Я пытаюсь "векторизовать" следующий цикл:

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

Я думаю это простоx[sig] но результат не совпадает.

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

В чем дело?

замечание

Очевидно из вывода мы видим, чтоfor петля иx[sig] разные. Смысл последнего ясен: перестановка, поэтому многие люди склонны считать, что цикл просто делает что-то не так. Но никогда не будь так уверен; это может быть какой-то четко определенный динамический процесс. Целью этих вопросов и ответов является не оценка правильности, а объяснение того, почему они не эквивалентны. Надеемся, что это послужит хорошим примером для понимания «векторизации».

Ответы на вопрос(4)

Ваш ответ на вопрос