mode                  package:base                  R Documentation

_T_h_e (_S_t_o_r_a_g_e) _M_o_d_e _o_f _a_n _O_b_j_e_c_t

_D_e_s_c_r_i_p_t_i_o_n:

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

_U_s_a_g_e:

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

_A_r_g_u_m_e_n_t_s:

       x: any R object.

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

_D_e_t_a_i_l_s:

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

_M_o_d_e _n_a_m_e_s:

     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"'.

_R_e_f_e_r_e_n_c_e_s:

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

_S_e_e _A_l_s_o:

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

_E_x_a_m_p_l_e_s:

     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)

