Check If R Is Running in Rstudio

Check if R is running in RStudio

There is no "running inside RStudio". RStudio is merely an IDE layer that wraps around R; at the end of the day it just launches the normal R executable you need to have on your $PATH anyway to operate RStudio.

As a proxy, and as R Studio You could test available.packages() for the 'manipulate' package though, or as a shorter version see if RStudio added itself to the .libPaths() content:

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

Edit in May 2020 or eight years later The question does come up, and one can query a variety of things from within. Here is an example from the terminal of 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
$

Similarly, from within the R session:

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>

Edit in Aug 2021 or nine years later As all the answers listed here in the different answer may still be too much for people, you can also install package rstudioapi from CRAN and then ask it via rstudioapi::isAvailable() which comes back TRUE for me inside RStudio and FALSE in ESS / standard R.

How do I test if R is running as Rscript?

You could use interactive to test if R is running in interactive mode. interactive will return FALSE under Rscript and TRUE under (most?) GUIs.

Detect if an R session is run in RStudio at startup

You can detect whether RStudio is hosting the R session by checking for the value of the RSTUDIO environment variable. For example,

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

How do you know RStudio is running?

RStudio spawns processes called "RStudio R session" that actually do the work. You should be able to find them in your task manager in the 'Background processes section'. Here's an example I generated after running while (TRUE) {x <- 2 + 1} which will ask R to do something pointless forever.

Task manager snip

Detect if R code is running from RStudio Connect

An alternative that I've been using is the R_CONFIG_ACTIVE envvar. From https://docs.rstudio.com/connect/admin/process-management/#using-the-config-package,

By default, R processes launched by RStudio Connect set R_CONFIG_ACTIVE to rsconnect.

This this, one might use

if (Sys.getenv("R_CONFIG_ACTIVE") == "rsconnect") {
print("Running on Connect")
} else {
print("Not running on Connect")
}

It's safe to not use isTRUE here, since Sys.getenv will always return a string of length 1; if it is unset, it returns "" (still length 1, just empty). (It's okay to use isTRUE if you still prefer.)

If you are curious what else is set within the RSC environment, see my other answer for a quick app that displays env-vars (among others).

How do you know RStudio is running?

RStudio spawns processes called "RStudio R session" that actually do the work. You should be able to find them in your task manager in the 'Background processes section'. Here's an example I generated after running while (TRUE) {x <- 2 + 1} which will ask R to do something pointless forever.

Task manager snip

R function to determine if another application is running

On Windows run this. If OneDrive is running then task will contain a line of information having the substring OneDrive.exe; otherwise, that substring will not be present.

task <- shell('tasklist /fi "imagename eq OneDrive.exe" /nh /fo csv', intern = TRUE)
grepl("OneDrive.exe", task) # returns TRUE if OneDrive running; else FALSE

This can be generalized by factoring out the image name:

imageName <- "OneDrive.exe" # change this line
cmd <- sprintf('tasklist /fi "imagename eq %s" /nh /fo csv', imageName)
task <- shell(cmd, intern = TRUE)
grepl(imageName, task)

Alternately use schtasks instead of tasklist, use taskscheduler_ls() in the taskscheduleR package or see returning command line from windows tasklist .

How can I know if R is running on 64 bits versus 32?

Here are a few ways:

  • Sys.getenv("R_ARCH") returns either "/i386" or "/x64" at least on my Windows system (but not on my Ubuntu system where it returns an empty string)

  • Sys.info()[["machine"]] returns "x86_32" or "x86_64" on my Windows and Ubuntu systems.

Updated: With additional method.



Related Topics



Leave a reply



Submit