2013-07-05 65 views
8

之間的區別這可能很簡單,但我仍然感到沮喪,所以我很感激一些快速解釋。我已經廣泛地尋找適當的答案,但似乎無法找到一個答案。.Rprofile和.first

因爲我的.Rprofile包含了每次打開Rstudio(或一般R)時需要運行的所有命令,爲什麼我有選擇性來在.Rprofile中定義.First()函數?什麼是.First()的目的是什麼?

舉個例子,假設我.Rprofile有下面幾行:

.First <- function(){ 
    library(xts) 
    cat("\nWelcome at", date(), "\n") 
} 

如何不同的是上面的從我.Rprofile線條簡單有:

library(xts) 
cat("\nWelcome at", date(), "\n") 

我有兩種都嘗試過,他們的確有相同的結果。

謝謝!

回答

12

的主要區別是工作空間圖像.Rdata(如果存在)被載入後默認該.First被執行,因此可以訪問在該工作空間的對象。

例如,讓我們創建將自動在啓動時加載的對象:

x <- 2 
save.image() 

退出R,並創建默認的工作目錄.RProfile包含:

y <- try(print(x)) 
print(y) 
.First <- function() 
{ 
    print(x) 
    invisible(NULL) 
} 

第一次嘗試打印x應該失敗,但第二個應該成功。

+0

非常好。非常感謝! –

+0

必須注意的是,這種行爲可能會非常成問題,因爲**。當工作空間加載時,首先可能會被先前版本的函數刪除**。應該特別重新加載工作區,刪除.Fisrt,然後重新啓動會話(保存工作區) –