进行load("files.RData"); ls()
时,打印到控制台的输出为:
'File1' 'File2' 'File3'
进行(load("files.RData"))
时(load()
括号中的点表示向R打印该行的输出),打印到控制台的输出为:
'.Random.seed' 'File1' 'File2' 'File3'
问题:造成这种差异的原因是什么?
注意:这可能是特定于IRkernel的代码,因为此代码是在Jupyter笔记本中运行的。
答案 0 :(得分:3)
从help("ls")
,我们可以看到all.names
的{{1}}参数的用途,该参数的默认值为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")
只要您使用R的伪随机数生成器之一,它就会在您的全局环境中弹出。例如,在全新的R会话中,我可以执行以下操作:
‘.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.
然后我可以通过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()
开头的文件-根据帮助文件,它是{{ 1}}。
因此,无论您从何处获得.
,他们要么使用save(list = ls(all.names = TRUE), file = ".RData", envir = .GlobalEnv)
,要么在保存files.RData
时有意包括其save.image()
对象。