Unevaluated Expressions

Creates or tests for objects of mode "expression".

programming, dplot

is.expression(x) as.expression(x, …)


expression: R objects, typically calls, symbols or constants. as.expression: arguments to be passed to methods.


an arbitrary R object.


‘Expression’ here is not being used in its colloquial sense, that of mathematical expressions. Those are calls (see call) in R, and an R expression vector is a list of calls, symbols etc, for example as returned by parse.

As an object of mode "expression" is a list, it can be subsetted by [, [[ or $, the latter two extracting individual calls etc. The replacement forms of these operators can be used to replace or delete elements.

expression and is.expression are primitive functions. expression is ‘special’: it does not evaluate its arguments.


expression returns a vector of type "expression" containing its arguments (unevaluated).

is.expression returns TRUE if expr is an expression object and FALSE otherwise.

as.expression attempts to coerce its argument into an expression object. It is generic, and only the default method is described here. (The default method calls as.vector(type = "expression") and so may dispatch methods for as.vector.) NULL, calls, symbols (see as.symbol) and pairlists are returned as the element of a length-one expression vector. Atomic vectors are placed element-by-element into an expression vector (without using any names): lists are changed type to an expression vector (keeping all attributes). Other types are not currently supported.


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

See Also

call, eval, function. Further, text and legend for plotting mathematical expressions.

  • expression
  • is.expression
  • as.expression
  • as.expression.default
library(base) # NOT RUN { length(ex1 <- expression(1 + 0:9)) # 1 ex1 eval(ex1) # 1:10 length(ex3 <- expression(u, 2, u + 0:9)) # 3 mode(ex3 [3]) # expression mode(ex3[[3]]) # call ## but not all components are 'call's : sapply(ex3, mode ) # name numeric call sapply(ex3, typeof) # symbol double language rm(ex3) # }
Documentation reproduced from package base, version 3.6.2, License: Part of R 3.6.2

Community examples

Looks like there are no examples yet.