如何返回函数中定义的所有函数?

时间:2019-06-18 08:21:16

标签: r function environment-variables return-value

我想返回在函数中定义的所有函数。

我知道ls()可用于返回函数名称,但我需要返回原始函数主体中定义的函数列表。

例如,我的函数可能看起来像

Failed to pull container image 'uk.icr.io/hvdveer/e2t-bridge:0.1.4'

其中return(?)应该返回包含函数a,b的列表。

1 个答案:

答案 0 :(得分:4)

通常情况下,我会分别列出所有内容以明确显示:

primary_function = function () {
    a = function () 2
    b = function () 3
    list(a = a, b = b)
}

但是如果有很多,您可以缩写:

primary_function = function () {
    a = function () 2
    b = function () 3
    as.list(environment())
}

(您也可以返回环境本身,而不是将其复制到列表中。)

请注意,这将返回 all 个本地符号。如果您有非功能符号,并且只想返回功能,则可以

primary_function = function () {
    a = function () 2
    b = function () 3
    mget(lsf.str())
}

还要注意,您的代码包含错误,因为R return中的语句不是语句,而是函数调用,它会中止当前的函数执行。因此,您需要用括号(例如return(2),而不是return 2)写,并且在这里使用它们是多余的:R总是返回函数执行的最后一个值。这就是为什么我忽略了它们。我只使用return表示提前退出。