R 3.1.3 'Fehler beim Versuch auf nicht-Funktion' innerhalb des eigenen entworfenen Funktion zum Zwischenspeichern einer inversen matrix

Hallo, ich Schreibe eine Funktion zum cache eine inverse matrix zur Minimierung der Rechenzeit.

Erwarte ich, dass die Funktion die Ausgabe eines inversen matrix jedoch bekomme ich eine Fehlermeldung, die sagt, ich bin versucht, verwenden Sie ein nicht-Funktion.

Dem ersten Stück code erstellt eine Funktion zum einrichten der Daten für die zweite Funktion. Diese in der Theorie dauert in der matrix invertiert es und speichert es.

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

Erwarte ich keine Ausgang in diesem Stadium, wie ich sagte, es stellt nur die Daten. unten casheSolve übernimmt eine matrix und prüft es gegen die Daten in 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'
}

Diesem allen tritt gut mit keine Fehler in meinem log. Ich gehe dann, um es zu testen und ich bekomme eine Fehlermeldung.

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

Fehler in cacheSolve(h) : attempt to apply non-function

Habe ich eine ähnliche Funktion für das speichern der Mittelwert eines Vektors und das läuft fehlerfrei ich bin nicht sicher, ob ich verpasst haben, ein Schritt in der Umwandlung von Vektoren unter Berücksichtigung der Berücksichtigung der matrixies.

Leser, der code kann auch helfen, um einen besseren Kern, so ich habe es unten

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) 
  • Ist dies m <- x$getmarix() ein Tippfehler?
  • user227710 - ich bin gedemütigt. Ich würde sogar gedruckt dem code heraus und markiert es. ja, es war ein Tippfehler und es fixiert den code.
InformationsquelleAutor Thomas Carr | 2015-06-21
Schreibe einen Kommentar