R-返回矩阵

R-返回矩阵,r,function,matrix,return,R,Function,Matrix,Return,我试图从函数返回一个矩阵,但无法理解为什么会返回错误 rdMatrix <- function (value = 0) { x <- diag(value) get <- function() return(x) x } 谁能告诉我这里少了什么 感谢和问候, 巴拉吉也许你的目标是: rdMatrix <- local({ get <- function() return(x) x <- NULL functio

我试图从函数返回一个矩阵,但无法理解为什么会返回错误

  rdMatrix <- function (value = 0) {
  x <- diag(value)

  get <- function() return(x)

  x
  }
谁能告诉我这里少了什么

感谢和问候,
巴拉吉

也许你的目标是:

rdMatrix <- local({
    get <- function() return(x)
    x <- NULL
    function (value = 0) {
        x <<- diag(value)
        x
    }
})

rdMatrix(5)
environment(rdMatrix)$get()

rdMatrix为什么有
返回的函数?Return的意思是“立即停止并返回
()
中的任何内容”。调用后,函数立即终止。我正在尝试返回矩阵,这是我的另一个项目的测试函数。我的目的是让rdMatrix$get()返回x。rdMatrix()$get:rdMatrix()中的错误$get:$运算符对于原子向量无效。它不起作用,你可以更改名称,但仍然是相同的错误,你不知道你想做什么,但也许这就足够了
rdMatrix如果您只想返回矩阵,为什么不
return(x)
而不是
获取感谢!是否可以不使用set()进行初始化?就像rdMatrix(3)而不是rdMatrix$set(3),有什么区别?如何修改此函数以实现此目的?短暂性脑缺血发作
rdMatrix <- local({
    get <- function() return(x)
    x <- NULL
    function (value = 0) {
        x <<- diag(value)
        x
    }
})

rdMatrix(5)
environment(rdMatrix)$get()
rdMatrix <- local({
    x <- NULL
    list(get=function() return(x),
         set=function(value=0) {
             x <<- diag(value)
         })
})

rdMatrix$set(3)
rdMatrix$get()