# R/angle.R In matlib: Matrix Functions for Teaching and Learning Linear Algebra and Multivariate Statistics

#### Documented in angle

```#
#' Angle between two vectors
#'
#' \code{angle} calculates the angle between two vectors.
#'
#' @param x a numeric vector
#' @param y a numeric vector
#' @param degree logical; should the angle be computed in degrees?
#'   If \code{FALSE} the result is returned in radians
#'
#' @return a scalar containing the angle between the vectors
#' @export
#' @examples
#' x <- c(2,1)
#' y <- c(1,1)
#' angle(x, y) # degrees
#' angle(x, y, degree = FALSE) # radians
#'
#' # visually
#' xlim <- c(0,2.5)
#' ylim <- c(0,2)
#' # proper geometry requires asp=1
#' plot( xlim, ylim, type="n", xlab="X", ylab="Y", asp=1,
#'   main = expression(theta == 18.4))
#' abline(v=0, h=0, col="gray")
#' vectors(rbind(x,y), col=c("red", "blue"), cex.lab=c(2, 2))
#' text(.5, .37, expression(theta))
#'
#'
#' ####
#' x <- c(-2,1)
#' y <- c(1,1)
#' angle(x, y) # degrees
#' angle(x, y, degree = FALSE) # radians
#'
#' # visually
#' xlim <- c(-2,1.5)
#' ylim <- c(0,2)
#' # proper geometry requires asp=1
#' plot( xlim, ylim, type="n", xlab="X", ylab="Y", asp=1,
#'   main = expression(theta == 108.4))
#' abline(v=0, h=0, col="gray")
#' vectors(rbind(x,y), col=c("red", "blue"), cex.lab=c(2, 2))
#' text(0, .4, expression(theta), cex=1.5)

angle <- function(x, y, degree = TRUE) {
theta <- acos(x %*% y / (len(x) * len(y)))
if(degree) theta <- r2d(theta)
theta
}
```

## Try the matlib package in your browser

Any scripts or data that you put into this service are public.

matlib documentation built on April 4, 2018, 5:03 p.m.