with                  package:base                  R Documentation

Evaluate an Expression in a Data Environment

Description:

     Evaluate an R expression in an environment constructed from data.

Usage:

     with(data, expr, ...)

Arguments:

    data: data to use for constructing an environment. For the default
          method this may be an environment, a list, a data frame, or
          an integer as in `sys.call'.

    expr: expression to evaluate.

     ...: arguments to be passed to future methods.

Details:

     `with' is a generic function that evaluates `expr' in a local
     environment constructed from `data'.  The environment has the
     caller's environment as its parent.  This is useful for
     simplifying calls to modeling functions.

See Also:

     `evalq'.

Examples:

     #examples from glm:

     library(MASS)
     data(anorexia)
     with(anorexia, {
         anorex.1 <- glm(Postwt ~ Prewt + Treat + offset(Prewt),
                         family = gaussian)
         summary(anorex.1)
     })


     with(data.frame(u = c(5,10,15,20,30,40,60,80,100),
                     lot1 = c(118,58,42,35,27,25,21,19,18),
                     lot2 = c(69,35,26,21,18,16,13,12,12)),
         list(summary(glm(lot1 ~ log(u), family=Gamma)),
              summary(glm(lot2 ~ log(u), family=Gamma))))

     # example from boxplot:
     data(ToothGrowth)
     with(ToothGrowth, {
         boxplot(len ~ dose, boxwex = 0.25, at = 1:3 - 0.2,
                 subset= supp == "VC", col="yellow",
                 main="Guinea Pigs' Tooth Growth",
                 xlab="Vitamin C dose mg",
                 ylab="tooth length", ylim=c(0,35))
         boxplot(len ~ dose, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2,
                 subset= supp == "OJ", col="orange")
         legend(2, 9, c("Ascorbic acid", "Orange juice"),
                fill = c("yellow", "orange"))
     })

     # alternate form that avoids subset argument:
     with(subset(ToothGrowth, supp == "VC"),
          boxplot(len ~ dose, boxwex = 0.25, at = 1:3 - 0.2,
                  col="yellow", main="Guinea Pigs' Tooth Growth",
                  xlab="Vitamin C dose mg",
                  ylab="tooth length", ylim=c(0,35)))
     with(subset(ToothGrowth,  supp == "OJ"),
          boxplot(len ~ dose, add = TRUE, boxwex = 0.25, at = 1:3 + 0.2,
                  col="orange"))
     legend(2, 9, c("Ascorbic acid", "Orange juice"),
            fill = c("yellow", "orange"))

