detecting operating system in R (e.g. for adaptive .Rprofile files)
I was wondering how to automatically detect operating system in R, for example to place things in the .Rprofile.
Solution 1:
switch(Sys.info()[['sysname']],
Windows= {print("I'm a Windows PC.")},
Linux = {print("I'm a penguin.")},
Darwin = {print("I'm a Mac.")})
Since it took me more than a trivial amount of time to sort this out, I thought other would benefit as well.
Regards,
- Brian
Solution 2:
I'm not sure about using Sys.info()
since the help page says it is not implemented on all R platforms; maybe use .Platform
instead? ?.Platform
has a lot of useful information, since:
‘.Platform’ is a list with some details of the platform under which R was built. This provides means to write OS-portable R code.
It also seems the packages included with R use .Platform
much more frequently than 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
Solution 3:
> Sys.info()
sysname
"Linux"
release
"2.6.32-26-generic"
version
"#48-Ubuntu SMP Wed Nov 24 09:00:03 UTC 2010"