Я пытаюсь использовать dplyr::filter()
с NSE, но не могу заставить его работать, когда отфильтрованная переменная as.Date()
.
Вот функция, которая почти работает:
foo <- function(d, f, var) {
d %>%
filter_(paste0(var, ">=", f))
}
d <- data.frame(a=1:10, b=1)
foo(d, f=5, var="a")
# a b
# 1 5 1
# 2 6 1
# 3 7 1
# 4 8 1
# 5 9 1
# 6 10 1
Но если a
- дата, она не будет работать:
d <- data.frame(a=seq.Date(as.Date("2019-01-01"), length.out = 7, by="day"), b=1)
foo(d, f=as.Date("2019-01-05"), var="a") # or foo(d, f="2019-01-05", var="a")
# a b
# 1 2019-01-01 1
# 2 2019-01-02 1
# 3 2019-01-03 1
# 4 2019-01-04 1
# 5 2019-01-05 1
# 6 2019-01-06 1
# 7 2019-01-07 1
Также я пытался с этим:
foo2 <- function(d, f, var) {
d %>%
filter(!!var >= f)
}
#foo2(d, f=5, var="a")
#foo2(d, f="2019-01-05", var="a")
Что не работает ни в одном из случаев, мне интересно знать также, почему foo2
не работает.