plotMeans {biology} | R Documentation |
~~ A concise (1-5 lines) description of what the function does. ~~
plotMeans(response, factor1, factor2, error.bars = c("se", "sd", "conf.int", "none"), level = 0.95, xlab = deparse(substitute(factor1)), ylab = paste("mean of", deparse(substitute(response))), legend.lab = deparse(substitute(factor2)), main = "Plot of Means", pch = 1:n.levs.2, lty = 1:n.levs.2, col = palette())
response |
~~Describe response here~~ |
factor1 |
~~Describe factor1 here~~ |
factor2 |
~~Describe factor2 here~~ |
error.bars |
~~Describe error.bars here~~ |
level |
~~Describe level here~~ |
xlab |
~~Describe xlab here~~ |
ylab |
~~Describe ylab here~~ |
legend.lab |
~~Describe legend.lab here~~ |
main |
~~Describe main here~~ |
pch |
~~Describe pch here~~ |
lty |
~~Describe lty here~~ |
col |
~~Describe col here~~ |
~~ If necessary, more details than the description above ~~
~Describe the value returned If it is a LIST, use
comp1 |
Description of 'comp1' |
comp2 |
Description of 'comp2' |
...
....
~~further notes~~
~Make other sections like Warning with section{Warning }{....} ~
~~who you are~~
~put references to the literature/web site here ~
~~objects to See Also as help
, ~~~
##---- Should be DIRECTLY executable !! ---- ##-- ==> Define data, use random, ##-- or do help(data=index) for the standard data sets. ## The function is currently defined as function (response, factor1, factor2, error.bars = c("se", "sd", "conf.int", "none"), level = 0.95, xlab = deparse(substitute(factor1)), ylab = paste("mean of", deparse(substitute(response))), legend.lab = deparse(substitute(factor2)), main = "Plot of Means", pch = 1:n.levs.2, lty = 1:n.levs.2, col = palette()) { if (!is.numeric(response)) stop("Argument response must be numeric.") xlab ylab legend.lab error.bars <- match.arg(error.bars) if (missing(factor2)) { if (!is.factor(factor1)) stop("Argument factor1 must be a factor.") valid <- !(is.na(factor1) | is.na(response)) factor1 <- factor1[valid] response <- response[valid] means <- tapply(response, factor1, mean) sds <- tapply(response, factor1, sd) ns <- tapply(response, factor1, length) if (error.bars == "se") sds <- sds/sqrt(ns) if (error.bars == "conf.int") sds <- qt((1 - level)/2, df = ns - 1, lower.tail = FALSE) * sds/sqrt(ns) yrange <- if (error.bars != "none") c(min(means - sds), max(means + sds)) else range(means) levs <- levels(factor1) n.levs <- length(levs) plot(c(1, n.levs), yrange, type = "n", xlab = xlab, ylab = ylab, axes = FALSE, main = main) points(1:n.levs, means, type = "b", pch = 16, cex = 2) box() axis(2) axis(1, at = 1:n.levs, labels = levs) if (error.bars != "none") arrows(1:n.levs, means - sds, 1:n.levs, means + sds, angle = 90, lty = 2, code = 3, length = 0.125) } else { if (!(is.factor(factor1) | is.factor(factor2))) stop("Arguments factor1 and factor2 must be factors.") valid <- !(is.na(factor1) | is.na(factor2) | is.na(response)) factor1 <- factor1[valid] factor2 <- factor2[valid] response <- response[valid] means <- tapply(response, list(factor1, factor2), mean) sds <- tapply(response, list(factor1, factor2), sd) ns <- tapply(response, list(factor1, factor2), length) if (error.bars == "se") sds <- sds/sqrt(ns) if (error.bars == "conf.int") sds <- qt((1 - level)/2, df = ns - 1, lower.tail = FALSE) * sds/sqrt(ns) yrange <- if (error.bars != "none") c(min(means - sds), max(means + sds)) else range(means) levs.1 <- levels(factor1) levs.2 <- levels(factor2) n.levs.1 <- length(levs.1) n.levs.2 <- length(levs.2) if (n.levs.2 > length(col)) stop(paste("Number of groups for factor2, ", n.levs.2, ", exceeds number of distinct colours, ", length(col), ".", sep = "")) plot(c(1, n.levs.1 + 1), yrange, type = "n", xlab = xlab, ylab = ylab, axes = FALSE, main = main) box() axis(2) axis(1, at = 1:n.levs.1, labels = levs.1) for (i in 1:n.levs.2) { points(1:n.levs.1, means[, i], type = "b", pch = pch[i], cex = 2, col = col[i], lty = lty[i]) if (error.bars != "none") arrows(1:n.levs.1, means[, i] - sds[, i], 1:n.levs.1, means[, i] + sds[, i], angle = 90, code = 3, col = col[i], lty = lty[i], length = 0.125) } x.posn <- n.levs.1 + 0.25 y.posn <- sum(c(0.1, 0.9) * par("usr")[c(3, 4)]) text(x.posn, y.posn, legend.lab, adj = c(0, -0.5)) legend(x.posn, y.posn, levs.2, pch = pch, col = col, lty = lty) } invisible(NULL) }