2016-03-14 35 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

谢谢!我编辑了这一点的答案。 –