R: The (Storage) Mode of an Object

mode {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) <- "<mode>"
    storage.mode(x)
    storage.mode(x) <- "<mode>"

### Arguments

`x` | any R 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 assignment versions are currently identical. Both `mode(x) <- newmode` and `storage.mode(x) <- newmode` change the `mode` or `storage.mode` of object `x` to `newmode`.

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 assignment 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.

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

[Package Contents]