我想问一下如何获取嵌入在另一个函数中的函数的值,如下例所示:
message <- function() {
inside.message <- function() {
return("inside.message")
}
}
run.f <- function() {
return.inside.mesage <- message()
print(return.inside.mesage)
}
run.f() # We do not get "inside.message"
提前感谢你们所有人
答案 0 :(得分:2)
在你的代码中,message()返回一个函数。要调用它,您需要添加一对额外的括号:
> message()()
[1] "inside.message"
如果你在代码中用message()()替换message(),它就会做你想要的。
答案 1 :(得分:1)
正如您所写,message
返回函数inside.message
,因为您没有显式返回任何内容,而且它是message
内部评估的最后一个表达式。
您似乎希望它从评估 inside.message
返回值,这需要message
中的另一行代码:
message <- function() {
inside.message <- function() {
return("inside.message")
}
inside.message()
}
答案 2 :(得分:1)
正如您所写,函数message
返回一个函数,如果求值将返回“inside.message”。因此,有几种方法可以让R打印“inside.message”。
第一种方式:
在message
函数中,添加行return(inside.message())
以便评估函数inside.message
并返回结果,而不是返回函数本身:
message <- function() {
inside.message <- function() {
return("inside.message")
}
return(inside.message())
}
message()
# "inside.message"
然后评估run.f()
也会打印“inside.message”。
第二种方式:
保留message
,并将run.f()
更改为以下
run.f <- function() {
return.inside.mesage <- message()
print(return.inside.mesage())
}
在上面,您将message()
返回的函数分配给对象return.inside.message
,然后评估该函数。