détection du système d’exploitation dans R (par exemple pour les fichiers .Rprofile adaptatifs)

Je me demandais comment détecter automatiquement le système d’exploitation dans R, par exemple pour placer des choses dans le profil .Rprofile.

Je ne suis pas sûr d’utiliser Sys.info() car la page d’aide indique qu’elle n’est pas implémentée sur toutes les plates-formes R; peut-être utiliser .Platform place? ?.Platform a beaucoup d’informations utiles, puisque:

‘.Platform’ est une liste avec quelques détails de la plate-forme sous laquelle R a été construit. Cela permet d’écrire du code R portable OS.

Il semble également que les packages inclus avec R utilisent .Platform beaucoup plus fréquemment que Sys.info .

 josh: /c/R/R-2.12.0-src/src/library > grep ".Platform" */R/* | wc -l 144 josh: /c/R/R-2.12.0-src/src/library > grep ".Platform\$OS.type" */R/* | wc -l 99 josh: /c/R/R-2.12.0-src/src/library > grep "Sys.info" */R/* | wc -l 4 
 switch(Sys.info()[['sysname']], Windows= {print("I'm a Windows PC.")}, Linux = {print("I'm a penguin.")}, Darwin = {print("I'm a Mac.")}) 

Étant donné que cela m’a pris plus qu’une quantité de temps insignifiant pour résoudre ce problème, j’ai pensé que d’autres en bénéficieraient également.

Cordialement,

  • Brian
 > Sys.info() sysname "Linux" release "2.6.32-26-generic" version "#48-Ubuntu SMP Wed Nov 24 09:00:03 UTC 2010" 

Étant donné que Sys.info() et .Platform$OS.type produisent des résultats différents selon le système d’exploitation en cours d’exécution, j’ai cherché plus et trouvé la fonction suivante sur https://www.r-bloggers.com/identifying-the-os -from-r /

 get_os <- function(){ sysinf <- Sys.info() if (!is.null(sysinf)){ os <- sysinf['sysname'] if (os == 'Darwin') os <- "osx" } else { ## mystery machine os <- .Platform$OS.type if (grepl("^darwin", R.version$os)) os <- "osx" if (grepl("linux-gnu", R.version$os)) os <- "linux" } tolower(os) }