首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >论课程R-程序设计课程作业2词汇范围的界定

论课程R-程序设计课程作业2词汇范围的界定
EN

Stack Overflow用户
提问于 2017-03-29 12:34:10
回答 2查看 6.3K关注 0票数 0

我使用的是Win7 64xRStudio版本3.3.2。

下面的函数是其他人提交的assignmet2解决方案。

代码语言:javascript
复制
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‘是相同的。)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-29 12:41:59

x <<- y创建x,然后由get()检索。请注意,get也是一个基本函数,并在这里被覆盖。我主张避免这样做,尽管它仅限于一个函数。一种特殊的解决方案是通过get实现基本的base::get功能。

get <- function() x

代码语言:javascript
复制
get <- function() {
  x
}

如果使用;只有一行或单独的语句,那么短版本就可以了。我对这段代码最大的不满是不使用论证。这在Java或其他语言中可能是可以的,但我不认为这是一种R方式。像这样修改对象可能导致意外的行为,这可能导致艰苦的调试。

setInversegetInverse不一样。他们所做的是设置逆序或得到它。

票数 3
EN

Stack Overflow用户

发布于 2017-03-29 13:10:55

您知道,这个任务的目标是创建一个超级矩阵,它可以存储它的内容,并且它也是逆的。因此,它必须有两个变量x矩阵,和inv逆。每个变量有两个函数setget。因此,set是一个函数,它接受一个参数并在其中执行一些操作,在这段代码中,sety作为参数(虚拟变量可以是任何其他名称)并将其赋值给矩阵xinv也是如此。

这将使这些变量的唯一访问是通过setget

注意:(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

现在,如果我们想使用这个函数:

代码语言:javascript
复制
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   10
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43093665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档