【问题标题】:Function that returns a function in R在 R 中返回函数的函数
【发布时间】:2014-12-23 23:39:26
【问题描述】:

我正在尝试创建一个创建并返回一个新函数的函数。我尝试了以下方法,但它不起作用。我想要

myfunc <- function(W){

myfunc2=function(X){
Y=W%*%X
return(Y)
}
return(myfunc2)
}

我希望能够在 myfunc 之外使用 myfunc2。关于如何做到这一点的任何想法?

【问题讨论】:

  • 我认为这个问题更适合编程部分 StackOverfow,因为它本身不是统计问题。

标签: r


【解决方案1】:

呃。是的,它确实。从我的终端:

> myfunc <- function(W){
+     
+     myfunc2=function(X){
+         Y=W%*%X
+         return(Y)
+     }
+     return(myfunc2)
+ }
> myfunc()
function(X){
    Y=W%*%X
    return(Y)
}
<environment: 0x5034590>

我的意思是,如果你想真正调用它,你需要运行为:

myfunc2 <- myfunc()

但除此之外,它似乎工作得很好。如果您想将其隐式分配给全局环境,而不必将其分配给对象:

myfunc <- function(W){

    myfunc2=function(X){
        Y=W%*%X
        return(Y)
    }
    assign("name_you_want_in_the_global_environment",myfunc2, envir = .GlobalEnv)
    return(invisible())
}
myfunc()

【讨论】:

  • 在不运行“myfunc2
【解决方案2】:

只需将 myfunc 的输出分配给一个函数对象,例如 myfunc2。然后您就可以像在全局环境中创建它一样使用它了。

> myfunc <- function(W){
+ 
+ myfunc2=function(X){
+ Y=W%*%X
+ return(Y)
+ }
+ return(myfunc2)
+ }
> W = diag(2)
> myfunc2 = myfunc(W)
> myfunc2
function(X){
Y=W%*%X
return(Y)
}
<environment: 0x1078a7a38>
> X = diag(2)
> myfunc2(X)
     [,1] [,2]
[1,]    1    0
[2,]    0    1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-16
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 2021-05-03
    • 2021-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多