38

我正在寻找一种方法来测试 R 是否正在从 RStudio 运行。出于某种原因,我昨天可以在谷歌上找到答案,但今天找不到,但我认为这与测试是否设置了某个系统变量有关。

4

9 回答 9

54

这是来自?rstudio

# Test whether running under RStudio 
isRStudio <- Sys.getenv("RSTUDIO") == "1"

也有rstudioapi::isAvailable(),但检查它并不可靠,因为 RStudio 似乎并不真正需要该rstudioapi包才能正常工作。

于 2013-07-23T07:52:52.837 回答
21

检查.Platform$GUI选项"RStudio"

is.rstudio = function(){
  .Platform$GUI == "RStudio"
}

看:

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

于 2016-03-07T17:10:44.153 回答
10

没有“在 RStudio 内运行”。RStudio 只是一个围绕 R 的 IDE 层;归根结底,它只是启动正常的 R 可执行文件,无论如何您都需要在 $PATH 上运行 RStudio。

作为代理和 R Studio 您可以测试 available.packages() 以获取“操作”包,或者作为较短的版本查看 RStudio 是否将自身添加到.libPath()内容中:

R> any(grepl("RStudio", .libPaths()))
[1] TRUE
R> 
R> 

编辑在 2020 年 5 月或八年后 问题确实出现了,可以从内部查询各种事情。这是来自 RStudio 终端的示例:

$ env | grep -i rstudio | sort
GIO_LAUNCHED_DESKTOP_FILE=/usr/share/applications/rstudio.desktop
PATH=[...redacted...]
RMARKDOWN_MATHJAX_PATH=/usr/lib/rstudio/resources/mathjax-27
RS_RPOSTBACK_PATH=/usr/lib/rstudio/bin/rpostback
RSTUDIO=1
RSTUDIO_CONSOLE_COLOR=256
RSTUDIO_CONSOLE_WIDTH=111
RSTUDIO_PANDOC=/usr/lib/rstudio/bin/pandoc
RSTUDIO_PROGRAM_MODE=desktop
RSTUDIO_PROJ_NAME=chshli
RSTUDIO_SESSION_ID=9C62D3D4
RSTUDIO_SESSION_PORT=13494
RSTUDIO_TERM=2BD6BB88
RSTUDIO_USER_IDENTITY=edd
RSTUDIO_WINUTILS=bin/winutils
$ 

同样,在 R 会话中:

R> se <- Sys.getenv()
R> se[grepl("rstudio",se,ignore.case=TRUE)]
GIO_LAUNCHED_DESKTOP_FILE        /usr/share/applications/rstudio.desktop
PATH                             [...also redacted...]
RMARKDOWN_MATHJAX_PATH           /usr/lib/rstudio/resources/mathjax-27
RS_RPOSTBACK_PATH                /usr/lib/rstudio/bin/rpostback
RSTUDIO_PANDOC                   /usr/lib/rstudio/bin/pandoc
R> 

在 2021 年 8 月或九年后编辑由于不同答案中列出的所有答案对人们来说可能仍然太多,您也可以rstudioapi从 CRAN 安装包,然后通过rstudioapi::isAvailable()哪个TRUE在 RStudio 和FALSEESS / 标准中为我返回来询问它R。

于 2012-09-12T14:04:45.277 回答
8

当我启动 RStudio 时,它似乎在搜索路径的第 2 位有 tools:rstudio。这有一个未记录但似乎返回 RStudio 版本字符串的函数“RStudio.version”:

> RStudio.version()
[1] "0.96.316"

所以你可以定义:

is.RStudio <- function(){
  if(!exists("RStudio.version"))return(FALSE)
  if(!is.function(RStudio.version))return(FALSE)
  return(TRUE)
}

也许使用它。

于 2012-09-12T16:50:42.993 回答
7

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

rstudioapi::isAvailable()
assertive::is_rstudio()

(列表并非详尽无遗)

和包分别包含额外的功能来检查其他 IDE、RStudio 的桌面/服务器版本以及各种assertive版本(例如,alpha、beta、devel、release、patched 等)。assertive.reflectionsR

于 2016-07-28T21:33:01.413 回答
3

为了增加猜测的数量,这里有一条来自 2011 年(冰河世纪)的消息

http://support.rstudio.org/help/discussions/problems/413-location-of-installed-packages

if (Sys.getenv("RSTUDIO_USER_IDENTITY")!= ""){
.libPaths(.Library) # Avoid additional libraries } else { # not rstudio ...
于 2013-07-23T10:15:59.037 回答
2

我发现以下对我有用

checkRstudio <- function () {
  return ("tools:rstudio" %in% search())
}

我自己对 R 有点陌生,但我相信 Rstudio 必须加载包“tools:rstudio”才能运行。

于 2014-07-02T00:27:23.980 回答
2

现在可以通过startup以下功能通过包获得整洁的解决方案is_rstudio_console

startup:::is_rstudio_console()
[1] TRUE

可能值得补充的是,此函数检查两个环境变量 ,@krlmr答案RSTUDIO提到了这一点,目前在前面的答案中似乎没有提到。RSTUDIO_TERM

function ()
{
    (Sys.getenv("RSTUDIO") == "1") && !nzchar(Sys.getenv("RSTUDIO_TERM"))
}
于 2018-04-03T11:52:42.250 回答
0

在 Mac 上,只有 Sys.getenv 答案有效

平台 x86_64-apple-darwin10.8.0
version.string R 版本 3.1.0 (2014-04-10)

Sys.getenv("RSTUDIO")=="1" [1] 真

RStudio.version() 错误:找不到函数“RStudio.version”

任何(grepl(“RStudio”,.libPaths()))[1]假

.libPaths() [1] "/Library/Frameworks/R.framework/Versions/3.1/Resources/library"

于 2014-06-28T07:58:36.900 回答