所以我将保留在数据框中作为输入的列名称,并且想要计算给定列的平均值(假设c是函数中的参数)。 / p>
编辑:试图在这里重新创建一个场景。
states <- c("Washington", "Washington", "California", "California")
random.data <- c(10, 20, 30, 40)
data <- data.frame(states, random.data)
data.frame <- data %>%
group_by(states) %>%
summarise_(average = mean(paste0("random", ".data")))
当我尝试这样做时,我收到以下错误:
Warning message:
In mean.default(paste0("random", ".data")) :
argument is not numeric or logical: returning NA
我对标准评估有一个想法,但由于某种原因,它不适合这种平均功能。
答案 0 :(得分:1)
我们可以将sym
与!!
col <- paste0("random", ".data")
data %>%
group_by(states) %>%
summarise(average = mean(!! rlang::sym(col)))
##or use directly
#summarise(average = mean(!! rlang::sym(paste0("random", ".data"))))
# A tibble: 2 x 2
# states average
# <fctr> <dbl>
#1 California 35
#2 Washington 15
或另一个选项是get
data %>%
group_by(states) %>%
summarise(average = mean(get(paste0("random", ".data"))))
# A tibble: 2 x 2
# states average
# <fctr> <dbl>
#1 California 35
#2 Washington 15