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") 

我都试过了,他们确实有同样的结果。

谢谢!

4

1 回答 1

14

主要区别在于在加载默认工作区图像(如果存在)之后.First执行,因此可以访问该工作区中的对象。.Rdata

例如,让我们创建一个将在启动时自动加载的对象:

x <- 2
save.image()

.RProfile退出 R,并在您的默认工作目录中创建一个包含:

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

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

于 2013-07-05T10:06:12.443 回答