Какая связь между `.Random.seed` и`ls()`?
При выполнении load("files.RData"); ls()
вывод на консоль:
'File1' 'File2' 'File3'
При выполнении (load("files.RData"))
(точка скобок вокруг load()
чтобы указать R, чтобы вывести вывод этой строки), вывод на консоль:
'.Random.seed' 'File1' 'File2' 'File3'
Вопрос: В чем причина этой разницы?
Примечание. Это может быть характерно для IRkernel, поскольку этот код выполняется в блокноте Jupyter.
1 ответ
От 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
,