2014-05-22 11 views
5

Disclosure: Questo è da un'assegnazione di programmazione da un corso Coursera chiamato R programmazionela matrice inversa da un oggetto in cache in R

L'assegnazione è per quanto riguarda le funzioni di ambito e cache lessicali che possono richiedere un tempo di calcolo lunga. Nello specifico sto usando solve() per trovare l'inverso di una matrice e lo metto in cache usando una variabile fluttuante. Sto restituendo un errore come descritto di seguito.

In primo luogo ho conservato una funzione in una variabile a<-makeCacheMatrix() Poi corro a$set(matrix(1:4,2,2) per memorizzare una matrice

Quando eseguo cacheSolve(a) ottengo Error in as.vector(x, mode) : cannot coerce type 'closure' to vector of type 'any'

Dalla mia comprensione ho il sospetto che io possa essere il superamento di un vettore atomica quando richiede una matrice, ma non sono sicuro come risolvere

Il mio codice:

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

Guardate il vostro definizione di funzione per cacheMatrix. Qual è l'oggetto che stai effettivamente passando a quella funzione. Cosa crea quell'argomento per cacheMatrix? È una matrice? – bwalter

risposta

6

Error in as.vector (x, modalità): non può costringere tipo 'chiusura' al vettore di tipo 'qualsiasi'

Mezzi che si tenta di costringere una funzione ad un vettore/matrice. Infatti in questa linea:

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

matrix è una funzione, o solve bisogno di una matrice.

Hai solo bisogno di cambiare questa linea:

matrix <- x$get 

da

matrix <- x$get() 
+0

Che errore stupido !!! Grazie mille per il vostro aiuto. –

Problemi correlati