web-dev-qa-db-fra.com

Vérifiez si R est en cours d'exécution dans RStudio

Je cherche un moyen de tester si R est exécuté à partir de RStudio. Pour une raison quelconque, je pouvais trouver la réponse sur Google hier mais pas aujourd'hui, mais je pense que cela avait à voir avec le fait de tester si une certaine variable système était définie.

26
Sacha Epskamp

Il n'y a pas de "course à l'intérieur de RStudio". RStudio est simplement une couche IDE qui enveloppe R; à la fin de la journée, il lance simplement le fichier exécutable R normal que vous devez avoir de toute façon sur votre $ PATH pour pouvoir utiliser RStudio.

En tant que proxy et en tant que R Studio, vous pouvez tester available.packages () pour le paquet 'manipulate', ou une version plus courte pour voir si RStudio s'est ajouté au contenu de .libPath():

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

C'est de ?rstudio:

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

Il existe également rstudioapi::isAvailable(), mais sa vérification est moins fiable car RStudio ne semble pas vraiment avoir besoin du package rstudioapi pour fonctionner correctement.

35
krlmlr

Cochez l'option .Platform$GUI pour "RStudio"

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

Voir:

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

9
coatless

Lorsque je lance RStudio, il semble disposer d'outils: rstudio en position 2 sur le chemin de recherche. Cela a une fonction "RStudio.version" qui n'est pas documentée mais qui semble renvoyer la chaîne de version RStudio:

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

Vous pouvez donc définir:

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

et peut-être l'utiliser.

6
Spacedman

Pour ajouter au nombre de suppositions de Nice, voici un message de 2011 (Ice Age)

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 ...
3
Dieter Menne

A ce jour, quelques packages incluent des fonctions permettant de vérifier si RStudio est en cours d'exécution:

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

(liste non exhaustive)

Les packages assertive et assertive.reflections, resp., Incluent des fonctions supplémentaires permettant de rechercher d'autres IDE, versions de bureau/serveur de RStudio et diverses versions R (par exemple, alpha, bêta, de développement, de publication, corrigée, etc.).

2
Uwe

Je trouve les oeuvres suivantes pour moi

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

Je suis un peu nouveau sur R moi-même, mais je pense que Rstudio charge nécessairement le package "tools: rstudio" pour pouvoir s'exécuter.

2
user3795816

Sur un Mac, seule la réponse Sys.getenv fonctionne.

plate-forme x86_64-Apple-darwin10.8.0
version.string R version 3.1.0 (2014-04-10)

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

Erreur RStudio.version (): impossible de trouver la fonction "RStudio.version"

any (grepl ("RStudio", .libPaths ())) [1] FALSE

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

0
user3785496

La solution soignée est maintenant disponible via le paquet startup via la fonction is_rstudio_console:

startup:::is_rstudio_console()
[1] TRUE
0
Konrad