R中的第一个功能

Jim*_*een 8 r

我不明白R.的第一个函数.我的理由是.Rprofile中的任何代码都将在R启动时被采购和执行.

这个

.First<-function(){                                                                 
    library('devtools')                                     
}
Run Code Online (Sandbox Code Playgroud)

还有这个

library('devtools')
Run Code Online (Sandbox Code Playgroud)

in .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"
Run Code Online (Sandbox Code Playgroud)

例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"
Run Code Online (Sandbox Code Playgroud)
  • 在什么情况下我绝对必须使用.First函数?
  • 为什么.首先在上面的例子中有所作为?

谢谢!

DAV*_*DAV 1

这可能是不必要的,但它确实提供了另一个修改启动的地方。拥有它当然不会有什么坏处。

我通常在不同的目录中运行 R 以保持不同的东西;链接到通用 .Rprofile;并使用 .First 根据我正在处理的特定问题定制当前的 R 运行环境。如果 .First 操作不可用,我必须创建一个。