R 3.1.3'错误尝试在自己设计的函数中应用非函数'来缓存逆矩阵

时间:2015-06-21 19:04:06

标签: r function matrix

您好我正在编写一个函数来缓存逆矩阵以最小化计算时间。

我希望函数会输出一个逆矩阵但是我得到一个错误,说我试图应用一个非函数。

第一段代码创建了一个为第二个函数设置数据的函数。理论上,这在矩阵中将其反转并存储它。

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)
}

我希望现阶段没有外出,因为我说它只是设置数据。低于casheSolve的矩阵会根据makeCacheMatrix

中设置的数据进行检查
cacheSolve <- function(x, ...) {
  m <- x$getmarix()
  if(!is.null(m)){
    message("getting cached data")
    return(m)
  }
  data <- x$get()
  m <- solve(data,...)
  x$setmatrix(m)
  m
  ## Return a matrix that is the inverse of 'x'
}

这一切都正常,我的日志中没有错误。然后我去测试它,我得到一个错误。

n <- matrix(1:4,2,2)
h <- makeCacheMatrix(n)
cacheSolve(h)

cacheSolve(h)中的错误:尝试应用非功能

我有一个类似的函数来保存向量的平均值并且运行无错误我不确定我是否错过了将其从考虑向量转换为考虑矩阵的步骤。

查看该代码也可能有助于提供更好的要点,因此我将其包含在

之下
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
}

z <- makeVector()
z$set(1:4)
cachemean(z) 

1 个答案:

答案 0 :(得分:1)

这可以通过编辑拼写错误来修复

 m <- x$getmarix()

应该阅读

m <- x$getmatrix()

然后代码工作正常。

感谢用户227710注意到这一点。