如何简化给定日期的过滤器代码

How to simplify the filter code for given days

当从数据框中过滤某些天的值时,我必须在过滤条件语句中重复 'as.Date' 很多次。 有什么办法可以简化吗?谢谢!

library(tidyverse)
test_data <- data.frame(mday=seq.Date(as.Date('2021-1-1'),
                        as.Date('2021-12-30'),by="1 day"),
                        value=rnorm(364))
# can't work
test_data %>% filter(mday %in% c(as.Date('2021-1-1','2021-7-1','2021-10-7')))

# can work, but have to repeat 'as.date' many times
test_data %>% filter(mday %in% c(as.Date('2021-1-1'),
                                 as.Date('2021-7-1'),
                                 as.Date('2021-10-7')))

你很接近。应该是:

test_data %>% filter(mday %in% as.Date(c('2021-1-1','2021-7-1','2021-10-7')))

这是因为首先您需要创建一个矢量,即使用 c() 函数,然后您可以对该矢量进行修改,在您的情况下 - 将矢量更改为 date