gpt4 book ai didi

R 编程 : cache the inverse of a matrix

转载 作者:行者123 更新时间:2023-12-04 23:42:25 27 4
gpt4 key购买 nike

我正在学习 Coursera 上的数据科学类(class),我对其中一项作业有疑问,在该作业中我必须对矩阵求逆,然后缓存该结果。

基本上我一直在谷歌上搜索并找到了答案,但我还没有理解部分答案。出于这个原因,我不想提交我的作业,因为我不想提交任何我不完全理解的东西。

从下面的代码中我不明白的部分是 setInverse 定义的部分。 “函数(逆)inv”从何而来?尤其是“逆”从未定义过?

在此之后返回一个列表,这对我来说也没有多大意义?

如果有人能花时间向我解释这个功能,我将不胜感激!

    makeCacheMatrix <- function(x = matrix()) {
inv <- NULL
set <- function(y) {
x <<- y
inv <<- NULL
}
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'
inv <- x$getInverse()
if (!is.null(inv)) {
message("getting cached data")
return(inv)
}
mat <- x$get()
inv <- solve(mat, ...)
x$setInverse(inv)
inv
}

最佳答案

我不知道你的确切任务,但我会稍微改变你的功能:

makeCacheMatrix <- function(x = matrix()) {
inv <- NULL
set <- function(y) {
x <<- y
inv <<- NULL
}
get <- function() x
setInverse <- function() inv <<- solve(x) #calculate the inverse
getInverse <- function() inv
list(set = set,
get = get,
setInverse = setInverse,
getInverse = getInverse)
}

然后你可以像这样使用它:
funs <- makeCacheMatrix()
funs$set(matrix(1:4, 2))
funs$get()
# [,1] [,2]
#[1,] 1 3
#[2,] 2 4
funs$setInverse()
funs$getInverse()
# [,1] [,2]
#[1,] -2 1.5
#[2,] 1 -0.5

练习大概是为了教你 closures .重点是 xinv存储在 set 的封闭环境中, get , setInverse , getInverse职能。这意味着定义它们的环境,即由 makeCacheMatrix() 创建的环境。称呼。看到这个:
ls(environment(funs$set))
#[1] "get" "getInverse" "inv" "set" "setInverse" "x"

如您所见,不仅是这个环境中的四个函数,还有 xinv对象(使用 <<- 的结果)。和 getgetInverse函数只从它们的封闭环境中获取这些。

关于R 编程 : cache the inverse of a matrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33738820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com