mode                  package:base                  R Documentation

The (Storage) Mode of an Object

Description:

     Get or set the type or storage mode of an object.

Usage:

     mode(x)
     mode(x) <- value
     storage.mode(x)
     storage.mode(x) <- value

Arguments:

       x: any R object.

   value: a character string giving the desired (storage) mode of the
          object.

Details:

     Both 'mode' and 'storage.mode' return a character string giving
     the (storage) mode of the object - often the same - both relying
     on the output of 'typeof(x)', see the example below.

     The two replacement versions are currently identical.  Both
     'mode(x) <- "newmode"' and 'storage.mode(x) <- "newmode"' change
     the 'mode' or 'storage.mode' of object 'x' to 'newmode'.  This is
     only supported if there is an appropriate 'as.newmode' function,
     for example '"logical"', '"integer"', '"double"', '"complex"',
     '"raw"', '"character"', '"list"', '"expression"', '"name"',
     '"symbol"' and '"function"'.

     As storage mode '"single"' is only a pseudo-mode in R, it will not
     be reported by 'mode' or 'storage.mode': use 'attr(object,
     "Csingle")' to examine this.  However, the replacement versions
     can be used to set the mode to '"single"', which sets the real
     mode to '"double"' and the '"Csingle"' attribute to 'TRUE'.
     Setting any other mode will remove this attribute.

     Note (in the examples below) that some 'call's have mode '"("'
     which is S compatible.

Mode names:

     Modes have the same set of names as types (see 'typeof') except
     that

        *  types '"integer"' and '"double"' are returned as
           '"numeric"'.

        *  types '"special"' and '"builtin"' are returned as
           '"function"'.

        *  type '"symbol"' is called mode '"name"'.

        *  type '"language"' is returned as '"("' or '"call"'.

References:

     Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) _The New S
     Language_. Wadsworth & Brooks/Cole.

See Also:

     'typeof' for the R-internal "mode", 'attributes'.

Examples:

     sapply(options(),mode)

     cex3 <- c("NULL","1","1:1","1i","list(1)","data.frame(x=1)", "pairlist(pi)",
       "c", "lm", "formals(lm)[[1]]",  "formals(lm)[[2]]",
       "y~x","expression((1))[[1]]", "(y~x)[[1]]", "expression(x <- pi)[[1]][[1]]")
     lex3 <- sapply(cex3, function(x) eval(parse(text=x)))
     mex3 <- t(sapply(lex3, function(x) c(typeof(x), storage.mode(x), mode(x))))
     dimnames(mex3) <- list(cex3, c("typeof(.)","storage.mode(.)","mode(.)"))
     mex3

     ## This also makes a local copy of 'pi':
     storage.mode(pi) <- "complex"
     storage.mode(pi)
     rm(pi)

