Rprofile中的启动脚本会抛出“找不到函数”错误

时间:2014-06-17 07:36:02

标签: r rprofile

我希望R在初始化时加载某个文件,所以我自然地在我的Rprofile中添加了source命令,所以:

  .First <- function()
   {
         cat("\n   Welcome to R MotherFnorder!!!\n\n")
         setwd("/home/username/Code/R/")
       source("/home/username/Code/R/file.R")
   }

但是现在当我开始R时,它会抛出一个未找到的功能&#39; runifrnorm等默认函数的错误。当我手动将相同的文件加载到工作区时,我没有错误。

2 个答案:

答案 0 :(得分:1)

您不需要(或者,实际上,想要)来创建.First。如果你将这些行放入.Rprofile,他们就会执行得很好。 - 在@Pascal指出的条件下,file.R中调用的任何函数必须首先加载其库。所以, 靠近.Rprofile的底部,只需输入

library(whatever_packages_needed)
cat("\n   Welcome to R MotherFnorder!!!\n\n")
setwd("/home/username/Code/R/")
source("/home/username/Code/R/file.R")
编辑:我无法重现您的问题。我将这些行添加到我的.Rprofile的末尾:

#testing SO problem with libloading
library(stats)
runif(10)

控制台返回十个不错的数字。

答案 1 :(得分:1)

错误的原因是当.First()包尚未加载时。

虽然runifrnorm可能看起来像默认函数,但它们实际上是stats包的一部分。因此,当调用.First()时,它们不可用(除非您在.First内专门调用该包)

......这也解释了这个:

  

当我手动将相同的文件加载到工作区时,我没有错误。

.First()之前之后你有机会手动运行任何东西,都会附加默认包。因此,当您手动调用它时,可用于您的功能。


解决方案是创建一个名为 "~/.Rprofile"的文件(如果它尚不存在)并在其中放入您.First()

中当前拥有的行