diff --git a/cachematrix.R b/cachematrix.R index a50be65aa44..00df4c3b87f 100644 --- a/cachematrix.R +++ b/cachematrix.R @@ -1,15 +1,42 @@ -## Put comments here that give an overall description of what your -## functions do +## This second programming assignment will require you to write an R function is able to cache +## potentially time-consuming computations. For example, taking the mean of a numeric vector is +## typically a fast operation. However, for a very long vector, it may take too long to compute +## the mean, especially if it has to be computed repeatedly (e.g. in a loop). If the contents of +## a vector are not changing, it may make sense to cache the value of the mean so that when we +## need it again, it can be looked up in the cache rather than recomputed. In this Programming +## Assignment will take advantage of the scoping rules of the R language and how they can be +## manipulated to preserve state inside of an R object. -## Write a short comment describing this function +## This function creates a special "matrix" object that can cache its inverse. makeCacheMatrix <- function(x = matrix()) { - + m <- NULL + set <- function(y) { + x <<- y + m <<- NULL + } + get <- function() x + setInverse <- function(inverse) m <<- inverse + getInverse <- function() m + list(set = set, get = get, + setInverse = setInverse, + getInverse = getInverse) } -## Write a short comment describing this function +## This function computes the inverse of the special "matrix" returned by makeCacheMatrix above. +## If the inverse has already been calculated (and the matrix has not changed), then the cachesolve +## should retrieve the inverse from the cache. cacheSolve <- function(x, ...) { ## Return a matrix that is the inverse of 'x' + m <- getInverse() + if(!is.null(m)){ + message("Checking cache...") + return(m) + } + data <- x$get() + m <- solve(data) + x$setInverse(m) + m }