启动时检测R会话是否在RStudio中运行

Bac*_*lin 2 session r rstudio

我在终端和RStudio中(在Mac和Linux上)都使用R,想知道两者是否可以使用不同的.Rprofiles,或者最好使用相同的库,.Rprofile但使用不同的环境特定的调整脚本。

我以为将以下代码放入我的目录中是可行的.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)
    }
}
Run Code Online (Sandbox Code Playgroud)

我还尝试了设置alias R='R --args terminal'.bash_profile该设置的确允许我检测会话是否从bash启动,但是它搞砸了,R CMD ...并且任何脚本都使用其他命令行参数。

我意识到,可能无法从R会话的起始位置进行检测,但是也许RStudio中有一些我不知道的聪明选择。

Kev*_*hey 6

您可以通过检查RSTUDIO环境变量的值来检测RStudio是否托管R会话。例如,

if (!is.na(Sys.getenv("RSTUDIO", unset = NA))) {
    # RStudio specific code
}
Run Code Online (Sandbox Code Playgroud)