我正在寻找一种方法来测试R是否从RStudio运行.出于某种原因,我可以在谷歌昨天找到答案但不是今天,但我认为这与测试是否设置了某个系统变量有关.
krl*_*mlr 40
这来自?rstudio:
# Test whether running under RStudio
isRStudio <- Sys.getenv("RSTUDIO") == "1"
Run Code Online (Sandbox Code Playgroud)
还有rstudioapi::isAvailable(),但检查这不可靠,因为RStudio似乎并不真的需要rstudioapi包正常工作.
coa*_*ess 12
检查.Platform$GUI选项"RStudio"
is.rstudio = function(){
.Platform$GUI == "RStudio"
}
Run Code Online (Sandbox Code Playgroud)
看到:
Dir*_*tel 10
没有"在RStudio内部运行".RStudio只是一个环绕R的IDE层; 在一天结束时,它只是启动您需要在$ PATH上运行RStudio的正常R可执行文件.
作为代理,作为R Studio您可以测试'manipulate'包的available.packages(),或者作为更短的版本,看看RStudio是否将自己添加到.libPath()内容中:
R> any(grepl("RStudio", .libPaths()))
[1] TRUE
R>
R>
Run Code Online (Sandbox Code Playgroud)
当我启动RStudio时,似乎有工具:rstudio在搜索路径的第2位.这有一个函数"RStudio.version",它没有记录,但似乎返回RStudio版本字符串:
> RStudio.version()
[1] "0.96.316"
Run Code Online (Sandbox Code Playgroud)
所以你可以定义:
is.RStudio <- function(){
if(!exists("RStudio.version"))return(FALSE)
if(!is.function(RStudio.version))return(FALSE)
return(TRUE)
}
Run Code Online (Sandbox Code Playgroud)
也许使用它.
截至今天,有几个包包含检查 RStudio 是否正在运行的功能:
rstudioapi::isAvailable()
assertive::is_rstudio()
Run Code Online (Sandbox Code Playgroud)
(列表并非详尽无遗)
在assertive和assertive.reflections封装,RESP,做包括附加功能,以检查其他IDE,桌面/ RStudio的服务器版本,以及各种R版本(如α,β,devel的,释放,修补等)