ID EN
Data Types & Classes

mode

R Base 3.6.2

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

Syntax

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

Arguments

Parameter Description
x any R object.
value a character string giving the desired mode or ‘storage mode’ (type) 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. mode(x) <- "newmode" changes the 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". Attributes are preserved (but see below). storage.mode(x) <- "newmode" is a more efficient primitive version of mode<-, which works for "newmode" which is one of the internal types (see typeof), but not for "single". Attributes are preserved. As storage mode "single" is only a pseudo-mode in R, it will not be reported by mode or storage.mode: use attr(obj

Examples

Example
R
# NOT RUN {
require(stats)

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)
# }

See Also

typeof for the R-internal ‘mode’ type.convert attributes.