Я пытаюсь отфильтровать набор данных в функции.
Я хотел бы отфильтровать этот набор данных только с учетом аргументов, переданных в функцию, пропуская тот, который отсутствует
Я пробовал с процессом match.call () - do.call (), но он не работает, и я думаю, что использую его неправильно. Может ли кто-нибудь помочь мне с моей проблемой?
people = data.frame(SEX = c("F", "H", "F", "F"),
ADULT = c(1,1,1,0))
f = function(dataset, sex = NULL, adult = NULL){
data <- dataset%>%filter(SEX == sex & ADULT == adult)
return(data)}
f(dataset = people, sex = "F", adult = 1)
g = function(dataset, sex, age){
argList <- as.list(match.call(expand.dots = TRUE)[-1])
# Enforce inclusion of non-optional arguments
argList$dataset <- dataset
do.call(f,argList)}
g(dataset = people, sex = "F")
Результат вызова функции f:
SEX ADULT
1 F 1
2 F 1
Это то, что я хочу. Но я бы хотел, чтобы результат f(dataset = people, sex = "F")
был:
SEX ADULT
1 F 1
2 F 1
3 F 0