我简化了功能
为了说明我的问题,即它比下面显示的更复杂。注意,函数的一般结构应该保持不变:它使用一个参数来指定要处理的数据帧(
df
),以及要总结的变量的参数(
variable_to_test
my_fun <- function(df, variable_to_test) {
variable_to_test <- enquo(variable_to_test)
new_var_name <- paste0(quo_name(variable_to_test), "_new_name")
df %>%
summarise(
!!new_var_name := sum(!!variable_to_test, na.rm = TRUE)
)
}
举个例子,我可以在数据帧中的每个变量上应用该函数:
library(tidyverse)
dat <- tibble(
variable_1 = c(1:5, NA, NA, NA, NA, NA),
variable_2 = c(NA, NA, NA, NA, NA, 11:15)
)
> my_fun(dat, variable_1)
# A tibble: 1 x 1
variable_1_new_name
<int>
1 15
> my_fun(dat, variable_2)
# A tibble: 1 x 1
variable_2_new_name
<int>
1 65
> dat %>%
+ lapply(., my_fun)
Error in duplicate(quo) : argument "quo" is missing, with no default
Called from: duplicate(quo)
lapply()
功能?