我有一个函数,只想在调用时返回该函数的参数名称。
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”。
我想将这些名称分配给函数内部的另一个列表
答案 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"