Возврат выбранных аргументов функции - PullRequest
3 голосов
/ 09 июля 2019

У меня есть функция, и я хочу при вызове возвращать только имена аргументов функции.

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 ]

4 голосов
/ 09 июля 2019

Вы можете попробовать это, хотя я не уверен на 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())

, что может сгладить некоторые странные случаи.

2 голосов
/ 09 июля 2019

Вот вариант

f <- function(...) names(rlang::enexprs(...))
f(a_unit = "char1", b_unit = "char2")
#[1] "a_unit" "b_unit"
2 голосов
/ 09 июля 2019
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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...