2016-02-12 26 views
7

我不明白R.中第一個函數的含義。我的理由是.Rprofile中的任何代碼都會在R啓動時生成並執行。。R中的第一個函數

.First<-function(){                 
    library('devtools')          
} 

library('devtools') 
在.Rprofile

具有完全相同的效果。

然而,這裏是展示。首先可以有所作爲的例子:

例1中,可以看到X11.options()$類型正確變得×程序庫中.Rprofile

>> 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()$型還是開羅,在.Rprofile的setHook沒有采取什麼情況下d效果

>> cat .Rprofile 
library(devtools) 

setHook(
    packageEvent("grDevices", "onLoad"), 
    function(...) grDevices::X11.options(type="Xlib") 
) 

>> Rscript -e 'X11.options()$type' 
[1] "cairo" 
  • 我絕對必須使用。第一個功能?
  • 爲什麼。首先在上面的例子中有所作爲?

謝謝!

+2

我猜可以在'.RData'中保存'.First'函數。 R首先加載'.Renviron'文件,然後加載'.Rprofile'文件,然後加載'.RData'文件。因此,如果您在.RData中保存'.First'函數,則可以爲每個項目定義不同的'.First'函數。我認爲這應該是具有「.First」功能的目的。 –

+3

@Narendra。好,我相信。爲什麼不把它作爲答案? –

+3

@Narendra或多或少的幫助文件:*函數.First(和.Last)可以在適當的'.Rprofile'或'Rprofile.site'文件中定義,或者已經保存在'.RData'中。* – 2016-02-12 07:16:19

回答

1

這可能是不必要的,但它確實提供了另一個地方來修改啓動。這當然不會傷害到它。

我通常在不同的目錄中運行R來保持事物分離;鏈接到一個共同的.prprofile;並使用。首先爲當前R運行環境定製我正在處理的具體問題。如果第一個動作不可用,我必須創建一個。

相關問題