Я бы хотел передать список переменных в функцию, но меня смущают цитаты и фразы.
Обычно я хочу вернуть df после некоторого управления данными - после того, как функция была применена к нескольким переменным.
Как таковая функция работает нормально (только слегка измененная из обмена стека пользователей ответ на другой вопрос), но в этом примере вызовы повторяются. Буду признателен за любые предложения, замечания по чтению и т. Д.
library(tidyverse)
library(rlang)
library(tidyselect)
data <- data.frame(ageeeeoo = c(1,NA,3,NA,5),
ageeeaah = c(NA,2,NA,4,NA),
numnumd = c(1,NA,3,NA,5),
numfoofe = c(NA,2,NA,4,NA))
newfun <- function (var1) {
var1<-enquo(var1)
data<<-mutate(data,(!!as_name(var1)) := coalesce(!!! syms(vars_select(names(data),
starts_with(as_name(var1))))))
}
newfun(age)
newfun(num)
ageeeeoo ageeeaah numnumd numfoofe age num
1 NA 1 NA 1 1
NA 2 NA 2 2 2
3 NA 3 NA 3 3
NA 4 NA 4 4 4
5 NA 5 NA 5 5
Я попытался просмотреть программные документы dplyr и несколько других обменов стека QA , но цитирование выбило меня из колеи. Я пытался использовать alist и list, но получаю ошибки.
listofvars<-c("age","num")
newfun <- function (...) {
data<<-mutate(data,(!!!rlang::syms(...)) := coalesce(!!! syms(vars_select(names(data),
starts_with(!!!quos(...))))))
}
newfun(listofvars)