从R中的缓存对象返回逆矩阵

Mic*_*eue 5 r matrix

披露:这是来自Coursera课程的编程作业,称为R编程

赋值是关于可能需要很长计算时间的词法范围和缓存函数.具体来说,我solve()用来找到矩阵的逆矩阵并使用自由浮动变量对其进行缓存.我将返回如下所述的错误.

首先我将一个函数存储在一个变量中a<-makeCacheMatrix()然后我运行a$set(matrix(1:4,2,2)来存储一个矩阵

当我跑步时,cacheSolve(a)我得到了Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any'

根据我的理解,我怀疑我可能在需要矩阵时传递原子矢量,但我不确定如何修复

我的代码:

makeCacheMatrix <- function(x = matrix()) {
  m<-NULL
  set<-function(y){
  x<<-y
  m<<-NULL
}
get<-function() x
setmatrix<-function(solve) m<<- solve
getmatrix<-function() m
list(set=set, get=get,
   setmatrix=setmatrix,
   getmatrix=getmatrix)
}

cacheSolve <- function(x=matrix(), ...) {
    m<-x$getmatrix()
    if(!is.null(m)){
      message("getting cached data")
      return(m)
    }
    matrix<-x$get
    m<-solve(matrix, ...)
    x$setmatrix(m)
    m
}
Run Code Online (Sandbox Code Playgroud)

ags*_*udy 6

as.vector(x,mode)出错:无法将'闭包'类型强制转换为'any'类型的向量

意味着您尝试将函数强制转换为向量/矩阵.确实在这一行:

matrix <- x$get
m <- solve(matrix, ...)
Run Code Online (Sandbox Code Playgroud)

matrix是一个函数,还是solve需要一个矩阵.

你只需要改变这一行:

matrix <- x$get
Run Code Online (Sandbox Code Playgroud)

通过

matrix <- x$get() 
Run Code Online (Sandbox Code Playgroud)