我有一個自定義過濾器的列表,我需要通過我的數據框子集。例如,對於mtcars我有這個名單:R:如何將一個過濾器列表傳遞給一個函數
filters=c(mpg>15, wt<2, carb>2 & am==0)
我想傳遞的列表中fmean後,這個列表傳遞給函數包含dplyr /管
fmean <- function(filter_x) mtcars %>% filter(filter_x) %>% summarise(mean(disp))
我的預期成果是:
subset mean(disp)
mpg>15 192
wt<2 80.2
carb>2 & am==0 324
如何獲取上述輸出?
編輯:找到一個解決方案tidyverse由於@alistaire,和其他人誰回答這裏:
library(tidyverse)
filters <- c("mpg > 15", "wt < 2", "carb > 2 & am==0")
fmean <- function(filter_x) { mtcars %>%
filter_(filter_x) %>%
summarise(mean(disp)) %>%
mutate(subset=filter_x) %>%
select(subset, everything()) }
filters %>% map_df(fmean)
輸出:
subset mean(disp)
mpg>15 192.3
wt<2 80.2
carb>2 & am==0 324.5
不應該將它轉置爲獲得所需的輸出嗎? – Irakli
@Irakli我可能會更喜歡使用一個命名的向量,但編輯將轉換包括到表中。 – Chris