mode {base} | R Documentation |
Get or set the type or storage mode of an object.
mode(x)
mode(x) <- "<mode>"
storage.mode(x)
storage.mode(x) <- "<mode>"
x |
any R object. |
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.
typeof
for the R-internal “mode”,
attributes
.
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)