Betriebssystem in R erkennen (zB für adaptive .Rprofile Dateien)

Ich habe mich gefragt, wie man das Betriebssystem in R automatisch erkennt, zum Beispiel um Dinge in das .Rprofile zu legen.

Ich bin mir nicht sicher über die Verwendung von Sys.info() da die Sys.info() sagt, dass es nicht auf allen R-Plattformen implementiert ist; vielleicht stattdessen .Platform ? ?.Platform hat viele nützliche Informationen, da:

‘.Platform’ ist eine Liste mit einigen Details der Plattform, unter der R gebaut wurde. Dies bietet Möglichkeiten zum Schreiben von OS-Portable-R-Code.

Es scheint auch, dass die mit R enthaltenen Pakete .Platform viel häufiger verwenden als 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.")}) 

Da ich mehr als nur eine triviale Zeit brauchte, um das zu klären, dachte ich, dass auch andere davon profitieren würden.

Grüße,

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

Da Sys.info() und .Platform$OS.type je nach Betriebssystem unterschiedliche Ergebnisse .Platform$OS.type , habe ich nach mehr gesucht und die folgende function unter https://www.r-bloggers.com/identifying-the-os gefunden -von-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) }