たとえば、.Rprofileに物を配置するために、Rでオペレーティングシステムを自動的に検出する方法を考えていました。
ヘルプページにすべてのRプラットフォームに実装されているわけではないと書かれているため、Sys.info()
の使用についてはよくわかりません。代わりに.Platform
を使用しますか? ?.Platform
には、次の理由から、多くの有用な情報があります。
「.Platform」は、Rが構築されたプラットフォームの詳細を含むリストです。これは、OSポータブルRコードを記述する手段を提供します。
また、Rに含まれているパッケージは.Platform
muchより頻繁に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.")})
これを整理するのにささいな時間以上かかったので、他の人にもメリットがあると思いました。
よろしく、
> 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
実行中のOSによって異なる結果が生成されるので、さらに検索して、次の関数を見つけました 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)
}