启动时在 RStudio 中检测 R 会话是否为 运行
Detect if an R session is run in RStudio at startup
我在终端和 RStudio 中都使用 R(在 mac 和 linux 上),想知道是否可以对两者使用不同的 .Rprofile
,或者最好使用相同的基础 .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)
}
}
我还尝试在 .bash_profile
中设置 alias R='R --args terminal'
,这确实允许我检测会话是否从 bash 开始,但它搞砸了 R CMD ...
和任何脚本使用其他命令行参数。
我意识到可能无法从 R 会话的起始位置进行检测,但也许 RStudio 中有一些我不知道的聪明选项。
您可以通过检查 RSTUDIO
环境变量的值来检测 RStudio 是否正在托管 R 会话。例如,
if (!is.na(Sys.getenv("RSTUDIO", unset = NA))) {
# RStudio specific code
}
我在终端和 RStudio 中都使用 R(在 mac 和 linux 上),想知道是否可以对两者使用不同的 .Rprofile
,或者最好使用相同的基础 .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)
}
}
我还尝试在 .bash_profile
中设置 alias R='R --args terminal'
,这确实允许我检测会话是否从 bash 开始,但它搞砸了 R CMD ...
和任何脚本使用其他命令行参数。
我意识到可能无法从 R 会话的起始位置进行检测,但也许 RStudio 中有一些我不知道的聪明选项。
您可以通过检查 RSTUDIO
环境变量的值来检测 RStudio 是否正在托管 R 会话。例如,
if (!is.na(Sys.getenv("RSTUDIO", unset = NA))) {
# RStudio specific code
}