![](/img/trans.png)
[英]How to map a function on a nested Tibble in R when there are NA in nested column?
[英]purrr map: How to use nested tibble column as function argument
我在理解如何将一列从嵌套的 tibble 传递给函数参数时遇到了一些困难。 例如,以下代码返回按“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}}
?
这应该做你想做的。 您可以使用 [[]] 运算符而不是 $ 使用变量内的字符串从数据框中动态提取列。
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"))
您可以使用以下 -
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.