R编程:矩阵的得分值在哪里?

R Programming: Where is the value of the matrix scored?

我有一个函数,其中 returns 包含 3 个子函数的列表如下:

makeCacheMatrix <- function(x = matrix()) {
inversedMatrix <- NULL
get <- function() x
setMatrix <- function(matrix) inversedMatrix <<- matrix
getMatrix <- function() inversedMatrix
list(get = get,
   setMatrix = setMatrix,
   getMatrix = getMatrix)
}

当我通过使用 matrixcal <- makeCacheMatrix(matrix(1:4, 2, 2))matrix(1:4, 2, 2) 传递给此函数来创建对象时,matrix(1:4, 2, 2) 的值存储在某处。我想了解此值的存储位置,因为我在全局环境的 R studio 中看不到它。显然它被存储在某个地方,因为我可以稍后使用 matrixcal$get()

访问它

提前致谢!

如果你调用你的函数

foo <- makeCacheMatrix(matrix(1:4, 2, 2))

再看对象

foo
# $get
# function() x
# <environment: 0x0000021849b5da78>

# $setMatrix
# function(matrix) inversedMatrix <<- matrix
# <environment: 0x0000021849b5da78>

# $getMatrix
# function() inversedMatrix
# <environment: 0x0000021849b5da78>

您会看到每个函数都有关联的环境(每次 运行 函数时,您的确切 numbers/digits 都会不同)。您的函数创建了一个闭包环境来存储创建的变量和函数。

您可以通过

访问该环境
environment(foo$get)

这只是给你环境对象。您可以使用

列出该环境的内容
ls.str(environment(foo$get))
# get : function ()  
# getMatrix : function ()  
# inversedMatrix :  NULL
# setMatrix : function (matrix)  
# x :  int [1:2, 1:2] 1 2 3 4

在那里您会看到原始矩阵存储在该环境的 x 值中。