Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 367b07b

Browse files
committed
2 parents 8a06f10 + 7f657dd commit 367b07b

File tree

2 files changed

+120
-0
lines changed

2 files changed

+120
-0
lines changed

README.md

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
### Introduction
2+
3+
This second programming assignment will require you to write an R
4+
function that is able to cache potentially time-consuming computations.
5+
For example, taking the mean of a numeric vector is typically a fast
6+
operation. However, for a very long vector, it may take too long to
7+
compute the mean, especially if it has to be computed repeatedly (e.g.
8+
in a loop). If the contents of a vector are not changing, it may make
9+
sense to cache the value of the mean so that when we need it again, it
10+
can be looked up in the cache rather than recomputed. In this
11+
Programming Assignment you will take advantage of the scoping rules of
12+
the R language and how they can be manipulated to preserve state inside
13+
of an R object.
14+
15+
### Example: Caching the Mean of a Vector
16+
17+
In this example we introduce the `<<-` operator which can be used to
18+
assign a value to an object in an environment that is different from the
19+
current environment. Below are two functions that are used to create a
20+
special object that stores a numeric vector and caches its mean.
21+
22+
The first function, `makeVector` creates a special "vector", which is
23+
really a list containing a function to
24+
25+
1. set the value of the vector
26+
2. get the value of the vector
27+
3. set the value of the mean
28+
4. get the value of the mean
29+
30+
<!-- -->
31+
32+
makeVector <- function(x = numeric()) {
33+
m <- NULL
34+
set <- function(y) {
35+
x <<- y
36+
m <<- NULL
37+
}
38+
get <- function() x
39+
setmean <- function(mean) m <<- mean
40+
getmean <- function() m
41+
list(set = set, get = get,
42+
setmean = setmean,
43+
getmean = getmean)
44+
}
45+
46+
The following function calculates the mean of the special "vector"
47+
created with the above function. However, it first checks to see if the
48+
mean has already been calculated. If so, it `get`s the mean from the
49+
cache and skips the computation. Otherwise, it calculates the mean of
50+
the data and sets the value of the mean in the cache via the `setmean`
51+
function.
52+
53+
cachemean <- function(x, ...) {
54+
m <- x$getmean()
55+
if(!is.null(m)) {
56+
message("getting cached data")
57+
return(m)
58+
}
59+
data <- x$get()
60+
m <- mean(data, ...)
61+
x$setmean(m)
62+
m
63+
}
64+
65+
### Assignment: Caching the Inverse of a Matrix
66+
67+
Matrix inversion is usually a costly computation and there may be some
68+
benefit to caching the inverse of a matrix rather than computing it
69+
repeatedly (there are also alternatives to matrix inversion that we will
70+
not discuss here). Your assignment is to write a pair of functions that
71+
cache the inverse of a matrix.
72+
73+
Write the following functions:
74+
75+
1. `makeCacheMatrix`: This function creates a special "matrix" object
76+
that can cache its inverse.
77+
2. `cacheSolve`: This function computes the inverse of the special
78+
"matrix" returned by `makeCacheMatrix` above. If the inverse has
79+
already been calculated (and the matrix has not changed), then
80+
`cacheSolve` should retrieve the inverse from the cache.
81+
82+
Computing the inverse of a square matrix can be done with the `solve`
83+
function in R. For example, if `X` is a square invertible matrix, then
84+
`solve(X)` returns its inverse.
85+
86+
For this assignment, assume that the matrix supplied is always
87+
invertible.
88+
89+
In order to complete this assignment, you must do the following:
90+
91+
1. Fork the GitHub repository containing the stub R files at
92+
[https://github.com/rdpeng/ProgrammingAssignment2](https://github.com/rdpeng/ProgrammingAssignment2)
93+
to create a copy under your own account.
94+
2. Clone your forked GitHub repository to your computer so that you can
95+
edit the files locally on your own machine.
96+
3. Edit the R file contained in the git repository and place your
97+
solution in that file (please do not rename the file).
98+
4. Commit your completed R file into YOUR git repository and push your
99+
git branch to the GitHub repository under your account.
100+
5. Submit to Coursera the URL to your GitHub repository that contains
101+
the completed R code for the assignment.
102+
103+
### Grading
104+
105+
This assignment will be graded via peer assessment.

cachematrix.R

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
## Put comments here that give an overall description of what your
2+
## functions do
3+
4+
## Write a short comment describing this function
5+
6+
makeCacheMatrix <- function(x = matrix()) {
7+
8+
}
9+
10+
11+
## Write a short comment describing this function
12+
13+
cacheSolve <- function(x, ...) {
14+
## Return a matrix that is the inverse of 'x'
15+
}

0 commit comments

Comments
 (0)