检查R是否在RStudio中运行

Sac*_*amp 29 r rstudio

我正在寻找一种方法来测试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)

看到:

http://thecoatlessprofessor.com/programming/detecting-if-r-is-in-rstudio-and-changing-rstudios-default-graphing-device/

  • 不幸的是,这个并不完美 - 直到_after_用户`.Rprofile`被执行后才会设置`.Platform $ GUI`(由于复杂的原因),因此对于启动脚本来说是不够的.通常,首选检查`RSTUDIO`环境变量. (3认同)
  • 我认为这将是'rstudioapi`然后:)的一个错误我将打开一个问题! (2认同)
  • 请注意,尽管有Kevin的评论中的问题,但这可以正确地区分在RStudio控制台中运行的代码和通过RStudio中的“终端”选项卡运行的代码,这与`RSTUDIO`环境变量不同。 (2认同)

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)


Spa*_*man 7

当我启动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)

也许使用它.


Uwe*_*Uwe 7

截至今天,有几个包包含检查 RStudio 是否正在运行的功能:

rstudioapi::isAvailable()
assertive::is_rstudio()
Run Code Online (Sandbox Code Playgroud)

(列表并非详尽无遗)

assertiveassertive.reflections封装,RESP,做包括附加功能,以检查其他IDE,桌面/ RStudio的服务器版本,以及各种R版本(如α,β,devel的,释放,修补等)