我很难理解如何将列从嵌套的小标题传递到函数参数中。例如,以下代码返回按“ am”分组的“ cyl”的均值:
test <- mtcars %>%
group_by(am) %>%
nest()
get_mean <- function (df) {
return (mean(df$cyl))
}
test <- test %>%
mutate(mean = map_dbl(data, get_mean))
但是我想要除cyl以外的其他列的均值,并希望将其作为参数传递给函数吗?我知道这是错误的代码,但我会尝试编写如下代码:
test <- mtcars %>%
group_by(am) %>%
nest()
get_mean <- function (df, column) {
return (mean(df${{column}}))
}
test <- test %>%
mutate(mean = map_dbl(data, get_mean, column))
任何有关此问题的帮助将不胜感激。我将如何column
进入map函数,我应该怎么写df${{column}}
?
答案 0 :(得分:0)
这应该做您想要的。您可以使用[[]]运算符而不是$使用变量内的字符串从数据帧中动态提取列。
library(purrr)
library(dplyr)
library(tidyr)
nest_data <- mtcars %>%
group_by(am) %>%
nest()
get_mean <- function (df, column) {
return (mean(df[[column]]))
}
test_cyl <- nest_data %>%
mutate(mean = map_dbl(data, get_mean, "cyl"))
test_mpg <- nest_data %>%
mutate(mean = map_dbl(data, get_mean, "mpg"))
答案 1 :(得分:0)
您可以使用以下 -
library(dplyr)
library(purrr)
get_mean <- function (df, column) {
df %>%
select(-{{column}}) %>%
unlist %>% mean
}
test %>% ungroup %>% mutate(mean = map_dbl(data, get_mean, cyl))
# am data mean
# <dbl> <list> <dbl>
#1 1 <tibble [13 × 10]> 36.3
#2 0 <tibble [19 × 10]> 55.5