solve.default()中出错:参数;a「;缺少,没有默认值 makeCacheMatrix

solve.default()中出错:参数;a「;缺少,没有默认值 makeCacheMatrix,r,R,当您调用x$setinverse(invm)时,您正在传入一个matrix对象。但是在函数setinverse中,使用solve()将其一个参数作为函数调用。不幸的是,当solve在该点引用最初作为invm传递的对象时,R足够聪明,知道solve()要使用函数,因此引用的是base::solve,而不是您的矩阵。如果运行base::solve()。所以你的问题是你的setinverse是错误的 如果您改为指定setinverse,它会工作!非常感谢你! 我仍然不明白为什么mean()函数不需要这

当您调用
x$setinverse(invm)
时,您正在传入一个
matrix
对象。但是在函数
setinverse
中,使用
solve()
将其一个参数作为函数调用。不幸的是,当
solve
在该点引用最初作为
invm
传递的对象时,R足够聪明,知道
solve()
要使用函数,因此引用的是
base::solve
,而不是您的矩阵。如果运行
base::solve()。所以你的问题是你的
setinverse
是错误的


如果您改为指定
setinverse,它会工作!非常感谢你!
我仍然不明白为什么mean()函数不需要这个规范,仍然可以引用一个对象。最初代码是这样的:

> test <- matrix(rnorm(16, 3), 4, 4)
> test
         [,1]     [,2]      [,3]     [,4]
[1,] 2.654912 4.085775 3.1288214 5.059539
[2,] 3.252612 3.403775 0.9990708 1.623138
[3,] 1.705998 3.586488 3.3337772 1.849144
[4,] 2.040830 4.815228 4.1713251 2.294179
> test2 <- makeCacheMatrix(test)
> cacheSolve(test2)
 Error in solve.default() : argument "a" is missing, with no default 

这不是答案,阿里诺。之所以这样做(
mean
指的是对象而不是函数),是因为这里使用的是
mean
而不是
mean()
,就像在另一个示例中一样。根据你在这里的评论,我的答案似乎真的应该是
setinverse。请删除这个答案。我真的不知道如何删除它。我只能在我的帖子上看到“删除”选项:/BTW。有没有办法直接与您联系?我想问一些关于我自己用这段代码做的实验的问题,我真的不想用它来阻塞这条线索。
cacheSolve <- function(x, ...) {
  invm <- x$getinverse()
  if(!is.null(invm)) {
    message("getting cached matrix")
    return(invm)
  }
  unit <- x$get()
  invm <- solve(unit, ...)
  x$setinverse(invm)
  invm
}

> test <- matrix(rnorm(16, 3), 4, 4)
> test
         [,1]     [,2]      [,3]     [,4]
[1,] 2.654912 4.085775 3.1288214 5.059539
[2,] 3.252612 3.403775 0.9990708 1.623138
[3,] 1.705998 3.586488 3.3337772 1.849144
[4,] 2.040830 4.815228 4.1713251 2.294179
> test2 <- makeCacheMatrix(test)
> cacheSolve(test2)
 Error in solve.default() : argument "a" is missing, with no default 
makeVector <- function(x = numeric()) {
        m <- NULL
        set <- function(y) {
                x <<- y
                m <<- NULL
        }
        get <- function() x
        setmean <- function(mean) m <<- mean
        getmean <- function() m
        list(set = set, get = get,
             setmean = setmean,
             getmean = getmean)
}
cachemean <- function(x, ...) {
        m <- x$getmean()
        if(!is.null(m)) {
                message("getting cached data")
                return(m)
        }
        data <- x$get()
        m <- mean(data, ...)
        x$setmean(m)
        m
}