2010-12-16 14 views

Respuesta

24

no estoy seguro sobre el uso de Sys.info() desde la página de ayuda dice que no está implementado en todas las plataformas de I; ¿Tal vez usar .Platform en su lugar? ?.Platform tiene una gran cantidad de información útil, ya que:

‘.Platform’ es una lista con algunos detalles de la plataforma bajo la cual R fue construido. Esto proporciona los medios para escribir el código R de OS portátil.

También parece que los paquetes incluidos con R utilizan .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 
70
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 de tiempo trivial para resolver esto, pensé que otro se beneficiaría también.

Saludos,

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

También hay 'R.version $ os', pero' Sys.info() 'es mejor para las pruebas en contra. –

+0

@Richie ¿Puede ampliar por qué Sys.info() es mejor? –

+3

La página de ayuda para 'R.version' dice" No use 'R.version $ os' para probar la plataforma en la que se está ejecutando el código: use' .Platform $ OS.type' en su lugar. " De manera molesta, no menciona la idoneidad de 'Sys.info()'. –

1

Desde Sys.info() y productos .Platform$OS.type resultados diferentes dependiendo de qué sistema operativo se está ejecutando, he buscado un poco más y encontré la siguiente función en 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) 
} 
Cuestiones relacionadas