Togaware DATA MINING
Desktop Survival Guide
by Graham Williams
Google

System Parameters

At times you may need or want to know about the machine on which you are running. The R .Platform variable will give information about the system, and can be used, for example, to conditionally run code depending on which operating system you are on.

> .Platform
$OS.type
[1] "unix"

$file.sep
[1] "/"

\$dynlib.ext
[1] ".so"

$GUI
[1] "X11"

$endian
[1] "little"

$pkgType
[1] "source"

> if (.Platform$OS.type == "unix") system("ls")

There are other variables, but .Platform is the recommended variable to use for programming. The variable version also lists information about the version of R you are running.

> version
         _
platform i486-pc-linux-gnu
arch     i486
os       linux-gnu
system   i486, linux-gnu
status   beta
major    2
minor    2.0
year     2005
month    09
day      28
svn rev  35702
language R

> if (version$os == "linux-gnu") system("ls")
> if (version$os == "mingw32") system("dir")

For a summary of the current R session the sessionInfo function is useful:

> sessionInfo()
R version 2.4.1 (2006-12-18)
i486-pc-linux-gnu

locale:
LC_CTYPE=en_AU;LC_NUMERIC=C;LC_TIME=en_AU;LC_COLLATE=en_AU;
LC_MONETARY=en_AU;LC_MESSAGES=en_AU;LC_PAPER=en_AU;LC_NAME=C;
LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=en_AU;LC_IDENTIFICATION=C

attached base packages:
[1] "stats"     "graphics"  "grDevices" "utils"     "datasets"  "methods"
[7] "base"

other attached packages:
       ROCR      gplots       gdata      gtools         ada       rpart
    "1.0-1"     "2.3.2"     "2.3.1"     "2.3.0"     "2.0-1"    "3.1-34"
    ellipse      rggobi        mice        nnet        MASS       Hmisc
    "0.3-2"   "2.1.4-4"      "1.15"    "7.2-31"    "7.2-31"     "3.2-1"
      RGtk2      rattle rcompletion
    "2.8.7"   "2.1.123"    "0.0-12"

Yet another source of system information is Sys.info which includes machine name and type, operating system name and version, and username.

> Sys.info()
                             sysname                              release
                             "Linux"                   "2.6.12-1-686-smp"
                             version                             nodename
"#1 SMP Tue Sep 6 15:52:07 UTC 2005"                             "athene"
                             machine                                login
                              "i686"                                "gjw"
                                user
                               "gjw"

> if (Sys.info()["sysname"] == "Linux") system("ls")

Information about various limits of the machine (including things like maximum integer) is obtained from the .Machine variable.

> .Machine
\$double.eps
[1] 2.220446e-16

$double.neg.eps
[1] 1.110223e-16

[...]

$integer.max
[1] 2147483647

$sizeof.long
[1] 4

$sizeof.longlong
[1] 8

$sizeof.longdouble
[1] 12

$sizeof.pointer
[1] 4

A call to capabilities will list optional features that have been compiled into your version of R:

> capabilities()
    jpeg      png    tcltk      X11 http/ftp  sockets   libxml     fifo
    TRUE     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE     TRUE
  cledit    iconv      NLS
    TRUE     TRUE     TRUE

The options function in R allows numerous characteristics of the running R session to be tuned. The options function without arguments returns a list of options and their values. Use getOption to get a specific option value, and options itself to set values. Options that can be set include the prompt string (prompt and continuation prompt (continue), the terminal width (width), number of digits to show when printing (digits, and many more. In this example we list some of the options then change width, storing its old value, evaluate some other functions, then restore the original value:

> options()
$OutDec
[1] "."

$X11colortype
[1] "true"

[...]

$verbose
[1] FALSE

$warn
[1] 0

$warnings.length
[1] 1000

$width
[1] 80

> getOption("width")
[1] 80
>ow <- options(width=120)
[...]
> options(ow)

Other useful functions include:

> R.home()		# Location of R installation: /usr/lib/R
> Sys.sleep(5)		# Sleep for 5 seconds.
> proc.time()           # shows how much time is currently consumed
> Rprof("Rprof.out")    # Profile the execution of R expressions
> system.time([...])	# Execute a command and report the time taken
> on.exit([...])        # Execute commands on exit or interruption
> username <- as.vector(Sys.info()["login"])

Copyright © 2004-2006 Graham.Williams@togaware.com
Support further development through the purchase of the PDF version of the book.
Brought to you by Togaware.