返回选择的函数参数

时间:2019-07-08 21:20:08

标签: r function

我有一个函数,只想在调用时返回该函数的参数名称。

f<-function(a=NULL,b=NULL,c=NULL,a_unit=NULL,b_unit=NULL,c_unit=NULL){
return(formalArgs(f))
}

这将返回函数中的所有参数名称。如何使其仅返回已调用参数的名称?

function(a_unit="char1",b_unit="char2") 

应仅返回参数名称“ a_unit”和“ b_unit”。

我想将这些名称分配给函数内部的另一个列表

3 个答案:

答案 0 :(得分:4)

您可以尝试一下,尽管我不能100%地确定它对单角情况的鲁棒性:

f<-function(a = NULL,b = NULL,c = NULL,a_unit = NULL,b_unit = NULL,c_unit = NULL){
    names(match.call())[-1]
}

@Moody_Mudskipper的有用建议

rlang::call_args(match.call())

这可能会消除一些陌生人的情况。

答案 1 :(得分:2)

f<-function(a=NULL,b=NULL,c=NULL,a_unit=NULL,b_unit=NULL,c_unit=NULL){
    formalArgs(f)[!sapply(mget(formalArgs(f)), is.null)]
}
f(a_unit="char1",b_unit="char2")
#[1] "a_unit" "b_unit"

答案 2 :(得分:2)

这是一个选择

f <- function(...) names(rlang::enexprs(...))
f(a_unit = "char1", b_unit = "char2")
#[1] "a_unit" "b_unit"