detección de sistema operativo en R (por ejemplo, para archivos adaptables de .Rprofile)

Me preguntaba cómo detectar automáticamente el sistema operativo en R, por ejemplo, para colocar cosas en el .Rprofile.

No estoy seguro sobre el uso de Sys.info() ya que la página de ayuda dice que no está implementado en todas las plataformas R; tal vez use .Platform en .Platform lugar? ?.Platform tiene mucha información útil, ya que:

‘.Platform’ es una lista con algunos detalles de la plataforma en la que se creó R. Esto proporciona medios para escribir código R portátil de OS.

También parece que los paquetes incluidos con R usan. .Platform mucho más frecuentemente 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.")}) 

Dado que me tomó más que una cantidad trivial de tiempo resolver esto, pensé que otros se beneficiarían también.

Saludos,

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

Como Sys.info() y .Platform$OS.type producen resultados diferentes según el sistema operativo en ejecución, busqué más y encontré la siguiente función en https://www.r-bloggers.com/identifying-the-os -de-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) }