我希望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; runif
或rnorm
等默认函数的错误。当我手动将相同的文件加载到工作区时,我没有错误。
答案 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()
包尚未加载时。
虽然runif
和rnorm
可能看起来像默认函数,但它们实际上是stats
包的一部分。因此,当调用.First()
时,它们不可用(除非您在.First
内专门调用该包)
......这也解释了这个:
当我手动将相同的文件加载到工作区时,我没有错误。
在.First()
但之前之后你有机会手动运行任何东西,都会附加默认包。因此,当您手动调用它时,可用于您的功能。
解决方案是创建一个名为
"~/.Rprofile"
的文件(如果它尚不存在)并在其中放入您.First()