在R中检测操作系统(例如,用于自适应.Rprofile文件)

我想知道如何自动检测R中的操作系统,例如将东西放在.R档案中。

我不确定使用Sys.info()因为帮助页面并没有在所有R平台上实现; 也许使用.Platform代替? ?.Platform有很多有用的信息,因为:

“.Platform”是一个列表,其中包含了构buildR的平台的一些细节。 这提供了编写OS便携式R代码的手段。

它也似乎包含在R使用.PlatformSys.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.")}) 

由于我花了不less时间来解决这个问题,所以我认为其他人也会受益匪浅。

问候,

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

由于Sys.info().Platform$OS.type根据哪个操作系统运行产生不同的结果,我search了一些,并在https://www.r-bloggers.com/identifying-the-os -从-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) }