我有以下数据集(样本):
train <- data.frame(ps_ind_06_bin = c(FALSE, FALSE, FALSE, TRUE, TRUE, FALSE),
ps_ind_07_bin = c(FALSE, TRUE, TRUE, FALSE, TRUE, TRUE),
ps_ind_08_bin = c(TRUE, TRUE, TRUE, FALSE, TRUE, FALSE),
ps_ind_09_log = c(1, 3, 4, 2, 3, 2))
我有以下函数,用于展示
group_by()
操作的ggplot图表:get_charts1 <- function(mygroup){
quo_var <- enquo(mygroup)
train %>%
group_by(!!quo_var) %>%
count() %>%
ungroup() %>%
ggplot(aes_q(x = quo_var, y = quote(n), fill = quo_var)) +
geom_col() +
theme(legend.position = "none")
}
当我手动输入列名时,它能正常工作,例如:
get_charts1(ps_ind_07_bin)
然而,我想在多列上使用该函数,我将它们放在一个向量上:
binarias <- train %>%
select(ends_with("bin")) %>%
colnames()
使用 map 函数并参考一些建议,我尝试使用:
listaplots <- map(quo(!!! syms(binarias)), get_charts1)
但是这会导致以下错误:
有人知道我需要做什么才能让这个工作吗?"Error: Can't splice at top-level"
map(quos(ps_ind_06_bin , ps_ind_07_bin ), get_charts1)
不起作用,所以问题并不在于扩展。似乎map()
只是强制评估参数。 - MrFlick