Какая связь между `.Random.seed` и` ls () `? - PullRequest
0 голосов
/ 19 сентября 2018

При выполнении load("files.RData"); ls() вывод на консоль выводится:

'File1'   'File2'   'File3'

При выполнении (load("files.RData")) (точка круглых скобок вокруг load() указывает на то, что R печатает выводв этой строке) вывод на консоль:

'.Random.seed'   'File1'   'File2'   'File3'

Вопрос: В чем причина этой разницы?

Примечание: Это может быть характерно для IRkernel, поскольку этот код выполняется в записной книжке Jupyter.

1 Ответ

0 голосов
/ 19 сентября 2018

Начиная с help("ls"), мы можем видеть назначение аргумента all.names для ls(), значение по умолчанию которого равно FALSE:

all.names: a logical value.  If ‘TRUE’, all object names are returned.
          If ‘FALSE’, names which begin with a ‘.’ are omitted.

Итак, в вашем первом примереls() не будет печататься .Random.seed;оно начинается с ..

Теперь рассмотрим разделы «Значение» файлов справки для load:

A character vector of the names of objects created, invisibly.

и Paren:

For ‘(’, the result of evaluating the argument.  This has
 visibility set, so will auto-print if used at top-level.

Итак, во втором примере load("files.RData") невидимо возвращает «Вектор символов имен созданных объектов» (даже .Random.seed), но ( автоматически печатает этот вектор символов, даже включая .Random.seed.

Что такое .Random.seed?

Сначала мы можем увидеть, что это , взглянув на help(".Random.seed"):

 ‘.Random.seed’ is an integer vector, containing the random number
 generator (RNG) *state* for random number generation in R.  It can
 be saved and restored, but should not be altered by the user.

Он появится в вашей глобальной среде каждый раз, когда вы используете один из генераторов псевдослучайных чисел R.Например, в новом сеансе R я могу сделать следующее:

x <- 1
ls(all.names = TRUE)
# [1] "x"

rnorm(1)
# [1] 2.378572

ls(all.names = TRUE)
# [1] ".Random.seed" "x"           

Затем я могу сохранить любой или все эти объекты R через save():

save(x, file = "one.RData")
save(.Random.seed, file = "two.RData")
save(x, .Random.seed, file = "all.RData")
# or, equivalently in this case,
# save(list = ls(all.names = TRUE), file = "all.RData")

ЕслиЯ использую save.image(), все, что в моей глобальной среде сохраняется, даже файлы, начинающиеся с . - в соответствии с файлом справки это ярлык для save(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv).

Такгде бы вы ни получили files.RData, они либо использовали save.image(), либо намеренно включили свой объект .Random.seed при сохранении files.RData.

...