Rev 7574 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed
\name{mode}\title{The (Storage) Mode of an Object}\usage{mode(x)mode(x) <- "<mode>"storage.mode(x)storage.mode(x) <- "<mode>"}\alias{mode}\alias{mode<-}\alias{storage.mode}\alias{storage.mode<-}\description{Get or set the type or storage mode of an object.\details{Both \code{mode} and \code{storage.mode} return a character stringgiving the (storage) mode of the object --- often the same --- bothrelying on the output of \code{\link{typeof}(x)}, see the examplebelow.The two assignment versions are currently identical. Both\code{mode(x) <- newmode} and \code{storage.mode(x) <- newmode} changethe \code{mode} or \code{storage.mode} of object \code{x} to\code{newmode}.As storage mode "single" is only a pseudo-mode in \R, it will not bereported by \code{mode} or \code{storage.mode}: use\code{attr(object, "Csingle")} to examine this. However, theassignment versions can be used to set the mode to \code{"single"},which sets the real mode to \code{"double"} and the \code{"Csingle"}attribute to \code{TRUE}. Setting any other mode will remove thisattribute.Note (in the examples below) that some \code{\link{call}}s have mode\code{"("} which is S compatible.}\seealso{\code{\link{typeof}} for the R-internal ``mode'',\code{\link{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)}\keyword{attribute}