Я использую tidyselection в некоторой функции, и мне нужно объединить первый аргумент с многоточием, поскольку это может быть специфицированный c класс, который будет нуждаться в специфической c обработке.
нормальное поведение таково:
foo = function(x, ...){
xloc = eval_select(expr(c(x, ...)), data = iris)
return(xloc)
}
foo(everything())
Я хочу иметь everything()
в качестве значения по умолчанию, когда x
равно NULL
( Я не могу поместить его непосредственно в заголовок по некоторым причинам ).
К сожалению, этот синтаксис недопустим:
bar = function(x, ...){
if(is_null(x))
x=everything() #throws an error
xloc = eval_select(expr(c(x, ...)), data = iris)
return(xloc)
}
bar(NULL)
# Error: `everything()` must be used within a *selecting* function.
# i See <https://tidyselect.r-lib.org/reference/faq-selection-context.html>.
Я пытался обернуть everything()
всеми известными мне функциями "mysti c": parse
, deparse
, call
, substitute
, quo
, sym
, enquo
, ensym
, ... Ничего не получалось (вы видите, что я не очень хорошо справляюсь с этим).
Каким выражением можно заменить строку x=everything()
во втором блоке кода для этой функции?
Версии:
- tidyselect version 1.0.0
- rlang version 0.4.5
- dplyr version 0.8.5