我有一个具有一组参数的数据帧(params
(,我想用(df
(中的数据过滤一个数据帧,从而创建df
的多个子集。
我的查询位于:
params <- expand.grid(category = c("Big","Small"),
Year = c(2017,2018,2019),
Month = c("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"))
我的数据帧是:
df <- data.frame(category =c("Foo", "Bah", "Foo", "Foo", "Bah", "Bah", "Bah", "Foo", "Foo", "Bah"),
year = c(2017, 2018, 2017, 2018, 2019, 2019, 2018, 2018, 2017, 2019),
month =c("Jan","Feb","Feb","Jan","Nov","Apr","Nov","Jan","May","May"))
我想知道这是否可以通过purrr::map2
实现,但我发现它只适用于矢量?
你的意思是这样的吗?
purrr::pmap(params, ~dplyr::filter(df,category == ..1, year == ..2, month == ..3))
其在基R中可以用Map
写入
Map(function(x, y, z) subset(df, category == x & year == y & month == z),
params$category, params$Year, params$Month)