.Rprofile和.First的区别

9
这可能很简单,但我仍感到沮丧,所以我希望能得到一些快速解释。我已经广泛寻找合适的答案,但似乎找不到一个。
由于我的.Rprofile包括每次打开Rstudio(或R总体)需要运行的所有命令,那么为什么我有在.Rprofile中定义.First()函数的选择性?.First()的真正目的是什么?
举个例子,假设我的.Rprofile有以下几行:
.First <- function(){
  library(xts)
  cat("\nWelcome at", date(), "\n") 
}

上述方法与在我的.Rprofile文件中添加以下行有何不同呢?
library(xts)
cat("\nWelcome at", date(), "\n") 

我尝试过两种方法,它们的结果是相同的。

谢谢!

1个回答

14
主要区别在于.First会在默认工作空间图像.Rdata(如果存在)被加载后执行,因此可以访问该工作空间中的对象。
例如,让我们创建一个将在启动时自动加载的对象:
x <- 2
save.image()

退出R,然后在您的默认工作目录中创建一个.RProfile文件,其中包含:

y <- try(print(x))
print(y)
.First <- function()
{
    print(x)
    invisible(NULL)
}

第一次尝试打印x应该失败,但第二次应该成功。


必须注意,这种行为可能会非常有问题,因为 .First 在加载工作区时可能会被函数的先前版本潜在地删除。应该特别重新加载工作区、删除 .First 并重新启动会话(保存工作区)。 - Antoine Lizée

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接