我使用的是Win7 64xRStudio版本3.3.2。
下面的函数是其他人提交的assignmet2解决方案。
makeCacheMatrix <- function(x = matrix()) {
inv <- NULL
set <- function(y) {
x <<- y
inv <<- NULL
}
get <- function() x
setInverse <- function(inverse) inv <<- inverse
getInverse <- function() inv
list(set = set,
get = get,
setInverse = setInverse,
getInverse = getInverse)
}首先,在函数makeCacheMatrix中,为什么“set函数”使用变量'y'?
它是简单地告诉我们如何使用“<<-”吗?
其次,在“get函数”中,为什么变量'x‘后面跟着函数的括号?( 'setInverse函数-inv<-反向’,'getInverse函数- inv‘是相同的。)
发布于 2017-03-29 12:41:59
x <<- y创建x,然后由get()检索。请注意,get也是一个基本函数,并在这里被覆盖。我主张避免这样做,尽管它仅限于一个函数。一种特殊的解决方案是通过get实现基本的base::get功能。
行get <- function() x是
get <- function() {
x
}如果使用;只有一行或单独的语句,那么短版本就可以了。我对这段代码最大的不满是不使用论证。这在Java或其他语言中可能是可以的,但我不认为这是一种R方式。像这样修改对象可能导致意外的行为,这可能导致艰苦的调试。
setInverse和getInverse不一样。他们所做的是设置逆序或得到它。
发布于 2017-03-29 13:10:55
您知道,这个任务的目标是创建一个超级矩阵,它可以存储它的内容,并且它也是逆的。因此,它必须有两个变量x矩阵,和inv逆。每个变量有两个函数set和get。因此,set是一个函数,它接受一个参数并在其中执行一些操作,在这段代码中,set将y作为参数(虚拟变量可以是任何其他名称)并将其赋值给矩阵x。inv也是如此。
这将使这些变量的唯一访问是通过set和get。
注意:(r文档) The operators <<- and ->> are normally only used in functions, and cause a search to be made through parent environments for an existing definition of the variable being assigned
现在,如果我们想使用这个函数:
mat <- makeCacheMatrix()
## set the matrix value
mat$set(matrix(data = (1:10), nrow = 5, ncol = 2))
## Check that we stored it correctly
mat$get()
# [,1] [,2]
# [1,] 1 6
# [2,] 2 7
# [3,] 3 8
# [4,] 4 9
# [5,] 5 10https://stackoverflow.com/questions/43093665
复制相似问题