2016-03-14 83 views
1

我在終端和RStudio(在Mac和Linux上)都使用R,並想知道是否有可能爲兩者使用不同的.Rprofile,或者最好使用相同的基地.Rprofile但源不同的環境特定的調整腳本。檢測是否在啓動時在RStudio中運行R會話

我認爲這會工作,將下面的代碼放在我的.Rprofile,但不幸session_info沒有在.First運行的時間設置。 Sys.getenv也不是。

.First <- function(){ 
    # [STUFF I ALWAYS WANT TO DO] 
    # Load my favourite packages 
    # Set CRAN mirror 
    # etc. etc. 

    # [ENVIRONMENT SPECIFIC TWEAKS] 
    if(grepl("RStudio", session_info()$platform$ui)){ 
     tryCatch(source("~/.R_RStudio"), error=print) 
    } else { 
     tryCatch(source("~/.R_terminal"), error=print) 
    } 
} 

我也試過在.bash_profile這確實允許,如果會議於慶典開始我檢測設置alias R='R --args terminal',但它搞砸了R CMD ...和使用其他命令行參數的任何腳本。

我意識到它可能無法從R會話中檢測它從哪裏開始,但也許在RStudio中有一些我不知道的聰明選項。

+0

你可以做類似'如果(is.na(Sys.getenv( 「RSTUDIO」,未設置= NA)){...}';!RStudio將始終設置'RSTUDIO'環境變量 –

+0

@KevinUshey非常感謝!如果您將它添加爲答案,我會馬上接受。 – Backlin

回答

4

您可以通過檢查RSTUDIO環境變量的值來檢測RStudio是否承載R會話。例如,

if (!is.na(Sys.getenv("RSTUDIO", unset = NA))) { 
    # RStudio specific code 
} 
+0

您的代碼缺少右括號:固定版本 'if(!is。 na(Sys.getenv(「RSTUDIO」,unset = NA))){ #RStudio特定代碼 }' –

+0

謝謝!我編輯了這一點的答案。 –