在使用dplyr包中的summarize_at函数时,如果使用tidyeval来动态地选择列进行汇总时,可能会遇到"argument 'e2 is missing with no default"的错误。
这个错误通常出现在以下情况下:在使用summarize_at函数时,忘记为选择的列提供一个正确的表达式。解决这个问题的方法是使用rlang包中的enquo函数将列名转换为一个引用对象,然后使用!!或!!sym来展开引用。
以下是解决这个问题的示例代码:
library(dplyr)
library(rlang)
# 创建一个示例数据框
df <- data.frame(
A = c(1, 2, 3),
B = c(4, 5, 6)
)
# 使用tidyeval和summarize_at来汇总数据框中的列
summarize_columns <- function(data, col_names) {
col_exprs <- enquo(col_names)
data %>%
summarise_at(vars(!!col_exprs), funs(sum))
}
# 调用summarize_columns函数,并传入列名参数
summarize_columns(df, A)
这段代码中,我们首先加载了dplyr和rlang包,然后创建了一个示例数据框df。接下来,我们定义了一个名为summarize_columns的函数,该函数使用了tidyeval和summarize_at来动态汇总数据框中的列。
在函数内部,我们使用enquo函数将传入的列名参数col_names转换为一个引用对象col_exprs。然后,我们使用!!col_exprs将引用对象展开,传递给summarize_at函数中的vars函数来选择要汇总的列。
最后,我们调用summarize_columns函数,并传入数据框df和列名参数A来执行汇总操作。
请注意,以上示例代码中没有提及任何腾讯云相关产品和产品介绍链接地址。如果您需要了解关于腾讯云的相关产品信息,请访问腾讯云官方网站。
领取专属 10元无门槛券
手把手带您无忧上云