Platform: Platform Specific Variables

.PlatformR Documentation

Platform Specific Variables

Description

.Platform is a list with some details of the platform under which R was built. This provides means to write OS-portable R code.

Usage

.Platform

Value

A list with at least the following components:

OS.type

character string, giving the Operating System (family) of the computer. One of "unix" or "windows".

file.sep

character string, giving the file separator used on your platform: "/" on both Unix-alikes and on Windows (but not on the former port to Classic Mac OS).

dynlib.ext

character string, giving the file name extension of dynamically loadable libraries, e.g., ".dll" on Windows and ".so" or ".sl" on Unix-alikes. (Note for macOS users: these are shared objects as loaded by dyn.load and not dylibs: see dyn.load.)

GUI

character string, giving the type of GUI in use, or "unknown" if no GUI can be assumed. Possible values are for Unix-alikes the values given via the -g command-line flag ("X11", "Tk"), "AQUA" (running under R.app on macOS), "Rgui" and "RTerm" (Windows) and perhaps others under alternative front-ends or embedded R.

endian

character string, "big" or "little", giving the ‘endianness’ of the processor in use. This is relevant when it is necessary to know the order to read/write bytes of e.g. an integer or double from/to a connection: see readBin.

pkgType

character string, the preferred setting for options("pkgType"). Values "source", "mac.binary" and "win.binary" are currently in use.

This should not be used to identify the OS.

path.sep

character string, giving the path separator, used on your platform, e.g., ":" on Unix-alikes and ";" on Windows. Used to separate paths in environment variables such as PATH and TEXINPUTS.

r_arch

character string, possibly "". The name of an architecture-specific directory used in this build of R.

AQUA

.Platform$GUI is set to "AQUA" under the macOS GUI, R.app. This has a number of consequences:

  • /usr/local/bin’ is appended to the PATH environment variable.

  • the default graphics device is set to quartz.

  • selects native (rather than Tk) widgets for the graphics = TRUE options of menu and select.list.

  • HTML help is displayed in the internal browser.

  • the spreadsheet-like data editor/viewer uses a Quartz version rather than the X11 one.

See Also

R.version and Sys.info give more details about the OS. In particular, R.version$platform is the canonical name of the platform under which R was compiled.

.Machine for details of the arithmetic used, and system for invoking platform-specific system commands.

capabilities and extSoftVersion (and links there) for availability of capabilities partly external to R but used from R functions.

Examples

## Note: this can be done in a system-independent way by dir.exists()
if(.Platform$OS.type == "unix") {
   system.test <- function(...) system(paste("test", ...)) == 0L
   dir.exists2 <- function(dir)
       sapply(dir, function(d) system.test("-d", d))
   dir.exists2(c(R.home(), "/tmp", "~", "/NO")) # > T T T F
}