Случайно я столкнулся с странным поведением оператора "[<-"
. Он ведет себя по-разному в зависимости от порядка вызовов и использует ли RStudio или просто обычный RGui. Я расскажу вам пример.
x <- 1:10
"[<-"(x, 1, 111)
x[5] <- 123
Насколько я знаю, первое совпадение не должно меняться x
(или, может быть, я ошибаюсь?), а второй должен делать. И фактически результат вышеописанных операций
x
[1] 1 2 3 4 123 6 7 8 9 10
Однако, когда мы выполняем эти операции в другом порядке, результаты разные, а x
изменилось! Сознательно:
x <- 1:10
x[5] <- 123
"[<-"(x, 1, 111)
x
[1] 111 2 3 4 123 6 7 8 9 10
Но это происходит только тогда, когда я использую простой R! В RStudio поведение в обоих вариантах одинаково. Я проверил его на двух машинах (один с Fedora с Win7), и ситуация выглядит точно так же.
Я знаю, что "функциональная" версия ("[<-"(x..)
), вероятно, никогда не используется, но мне очень любопытно, почему это происходит. Может ли кто-нибудь объяснить это?
==========================
EDIT:
Хорошо, поэтому из комментариев я понял, что причина в том, что x <- 1:10
имеет тип "integer" и после замены x[5] <- 123
он "double".
Но все еще остается вопрос, почему поведение в RStudio отличается? Я перезапускаю сеанс R и ничего не меняю.