diff --git a/cachematrix.R b/cachematrix.R index a50be65aa44..d6a76149f3a 100644 --- a/cachematrix.R +++ b/cachematrix.R @@ -1,15 +1,47 @@ -## Put comments here that give an overall description of what your -## functions do -## Write a short comment describing this function +## This function creates a special "matrix" object that can cache its median. +## It includes functions to set and get the matrix, and to set and get the cached median. -makeCacheMatrix <- function(x = matrix()) { +## This function computes the median of the special "matrix" returned by makeCacheMatrix. + +makeCacheMatrix <- function(x = matrix()) { + inv <- NULL + + set <- function(y) { + x <<- y + inv <<- NULL # Reset the inverse when the matrix is changed + } + + get <- function() x + + setInverse <- function(inverse) inv <<- inverse + + getInverse <- function() inv + + list(set = set, + get = get, + setInverse = setInverse, + getInverse = getInverse) } -## Write a short comment describing this function + cacheSolve <- function(x, ...) { - ## Return a matrix that is the inverse of 'x' -} +  # Try to get the cached inverse +  inv <- x$getInverse() +  +  # If the inverse is already cached, return it +  if (!is.null(inv)) { +    message("Getting cached inverse") +    return(inv) +  } +  +  # If not cached, compute the inverse +  mat <- x$get()         # Get the matrix +  inv <- solve(mat, ...) # Compute the inverse using solve() +  +  # Cache the inverse for future use + +