簡體   English   中英

在R中返回函數的函數

[英]Function that returns a function in R

我正在嘗試創建一個創建並返回新函數的函數。 我嘗試了以下,但它不起作用。 我想要

myfunc <- function(W){

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

我希望能夠在myfunc之外使用myfunc2。 有關如何做到這一點的任何想法?

呃。 是的,它確實。 從我的終端:

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

只需將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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM