披露:这是来自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)
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)
归档时间: |
|
查看次数: |
26721 次 |
最近记录: |