我不明白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"
  • 在什么情况下我绝对必须使用.first函数?
  • 为什么。首先在上面的示例中有所作为?

  • 谢谢!

    最佳答案

    可能没有必要,但是它确实提供了另一个修改启动的位置。拥有它当然不会有伤害。

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

    关于r - .R中的第一个功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35356603/

    10-12 17:44
    查看更多