Я работаю с главой Имена и Значения главы книги Хэдли Advance R и пытаюсь представить принцип "изменить на месте" в моем отрендеренном файле RMarkdown.
Если язапустите следующее в RStudio
library(lobstr)
v <- c(1, 2, 3)
obj_addr(v)
#> [1] "0x7fe6d48ff6f8"
v[[3]] <- 4
obj_addr(v)
#> [1] "0x7fe6d495cd78"
Я получаю другое obj_addr
для v
.Я полагаю, что это потому, что
"... панель среды должна делать ссылку на каждый объект для отображения информации о нем. Это искажает ваше интерактивное исследование, но не влияет на код внутри функцийи поэтому не влияет на производительность во время анализа данных. Для экспериментов я рекомендую либо запускать R напрямую из терминала, либо использовать RMarkdown "
Когда я запускаю его непосредственно в R, я получаю ожидаемый результат.
library(lobstr)
v <- c(1, 2, 3)
obj_addr(v)
#> [1] "0x7f9bb683e138"
v[[3]] <- 4
obj_addr(v)
#> [1] "0x7f9bb683e138"
Объект с одной привязкой, который был изменен на месте и, таким образом, имеет тот же адрес объекта.
Однако, когда я рендерил свой файл .Rmd в файл htmlмой вывод такой же, как если бы я выполнял код в интерактивном режиме в RStudio.Почему это не согласуется с предложением Хэдли?
Я рекомендую либо запускать R непосредственно из терминала, либо использовать RMarkdown