在R中检测操作系统(例如,用于自适应.Rprofile文件)
我想知道如何自动检测R中的操作系统,例如将东西放在.R档案中。
我不确定使用Sys.info()
因为帮助页面并没有在所有R平台上实现; 也许使用.Platform
代替? ?.Platform
有很多有用的信息,因为:
“.Platform”是一个列表,其中包含了构buildR的平台的一些细节。 这提供了编写OS便携式R代码的手段。
它也似乎包含在R使用.Platform
比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.")})
由于我花了不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) }