在R中返回函数的函数

时间:2014-12-23 23:39:27

标签: r

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

myfunc <- function(W){

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

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

2 个答案:

答案 0 :(得分:6)

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

> 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()

答案 1 :(得分:1)

只需将myfunc的输出分配给一个函数对象,比如myfunc2。然后,您可以在全球环境中使用它。

&#13;
&#13;
> 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
&#13;
&#13;
&#13;