我试图创建一个创建并返回新功能的函数。我尝试了以下方法,但它不起作用。我想要
myfunc <- function(W){
myfunc2=function(X){
Y=W%*%X
return(Y)
}
return(myfunc2)
}
我希望能够在myfunc之外使用myfunc2。有关如何做到这一点的任何想法?
答案 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。然后,您可以在全球环境中使用它。
> 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;