我不明白R中的.First函数的意义。我的原因是,无论如何,R启动时,.Rprofile中的任何代码都将被获取并执行。
这
.First<-function(){
library('devtools')
}
和这个
library('devtools')
在.Rprofile中具有完全相同的效果。
但是,以下示例显示。首先可以有所作为:
示例1,您可以看到X11.options()$ type正确成为.Rprofile中设置的Xlib
>> cat .Rprofile
.First <- function() {
library(devtools)
}
setHook(
packageEvent("grDevices", "onLoad"),
function(...) grDevices::X11.options(type="Xlib")
)
>> Rscript -e 'X11.options()$type'
[1] "Xlib"
示例2,您可以看到X11.options()$ type仍然是cairo,.Rprofile中的setHook没有生效
>> cat .Rprofile
library(devtools)
setHook(
packageEvent("grDevices", "onLoad"),
function(...) grDevices::X11.options(type="Xlib")
)
>> Rscript -e 'X11.options()$type'
[1] "cairo"
谢谢!
最佳答案
可能没有必要,但是它确实提供了另一个修改启动的位置。拥有它当然不会有伤害。
我通常在不同的目录中运行R以使它们分开。链接到通用的.Rprofile;并使用.First根据我正在处理的特定问题定制当前的R运行环境。如果.First操作不可用,则必须创建一个。
关于r - .R中的第一个功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35356603/