Учитывая код в OP, x$getinverse()
должен возвращать NULL
, потому что нужно заполнить cacheSolve()
для заполнения кеша. Я объясняю подробности того, как пример кода для этого назначения, в том числе необходимость второй функции для заполнения кэша, в ответе stackoverflow Кэширование среднего вектора .
Тем не менее, программа имеет три дефекта, которые мешают ей работать правильно.
- В
cacheSolve()
, m<-x$getinverse
устанавливает значение m
для функции, а не результат выполнения getinverse()
функции
- В
cacheSolve()
, data<-x$get
возвращает адрес функции get()
вместо ее содержимого.
- В
cacheSolve()
, x$setinverse(m)
завершается ошибкой, потому что функция setinverse()
в makeCacheMatrix
не включает входной аргумент.
Обратите внимание, что, поскольку я являюсь наставником сообщества для курса по программированию Хопкинса R , мне не разрешается публиковать полное решение, поскольку оно нарушает Кодекс Honor Coursera.
После исправления ошибок код работает следующим образом:
> x <-makeCacheMatrix(matrix(c(1,0,0,0,1,0,0,0,2),ncol=3,nrow=3))
> cacheSolve(x)
[,1] [,2] [,3]
[1,] 1 0 0.0
[2,] 0 1 0.0
[3,] 0 0 0.5
> x$get()
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 2
> x$getinverse()
[,1] [,2] [,3]
[1,] 1 0 0.0
[2,] 0 1 0.0
[3,] 0 0 0.5
>