2014-05-22 29 views
5

Ujawnienie: To jest z cesją programowania ze Coursera golfowego o nazwie R programowaniaWracając odwrotny macierz z pamięci podręcznej obiektu w R

Przypisanie dotyczy leksykalnych zakresu ich buforowania i funkcji, które mogą wymagać długiego czasu obliczeń. W szczególności używam solve(), aby znaleźć odwrotność macierzy i buforować ją za pomocą zmiennej swobodnej. Zwracam błąd opisany poniżej.

Najpierw przechowywane funkcji w zmiennej a<-makeCacheMatrix() Potem biegnę a$set(matrix(1:4,2,2) przechowywać matrycę

Kiedy biegnę cacheSolve(a) uzyskać Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any'

Z mojego zrozumienia Podejrzewam, że może być przepuszczanie wektor atomową gdy jest wymaga matrycy, ale nie jestem pewien, jak to naprawić

Mój kod:

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 
} 
+0

spojrzeć na swojej definicji funkcji dla cacheMatrix. Jaki obiekt faktycznie przekazujesz do tej funkcji. Co tworzy ten argument dla cacheMatrix? Czy to matryca? – bwalter

Odpowiedz

6

Błąd w as.vector (x, tryb): nie można wymusić zamknięcie typu „” do wektora typu „każdy”

oznacza, że ​​starają się zmusić funkcję wektora/macierzy. Rzeczywiście w tym wierszu:

matrix <- x$get 
m <- solve(matrix, ...) 

matrix jest funkcją lub solve potrzebują matrycy.

Trzeba tylko zmienić tę linię:

matrix <- x$get 

przez

matrix <- x$get() 
+0

Co za głupi błąd !!! Dziękuję bardzo za Twoją pomoc. –

Powiązane problemy