有时候,我会根据另一列的值来更改嵌套tibble的列名称。
我可以在map()
中使用它来准备函数。
library(tidyverse)
# sample data
d <- tibble(col1 = 1:8, col2 = 11:18, group = letters[rep(1:2, each = 4)]) %>%
nest(-group)
f <- function(data, group) rename(data, !!paste0(group, "_col1") := col1)
# Run
desired_output <- d %>%
mutate(data = map2(data, group, f))
names(desired_output$data[[1]]) # "a_col1" "col2" # work
我想通过匿名函数来执行此操作,但是它不起作用。有没有办法像mutate(map(rename(!!a := b)))
那样使用匿名函数?
谢谢您的任何建议。
d %>%
mutate(data2 = map2(data, group,
function(data, group) {
data %>%
rename(!!paste0(group, "_col1") := col1)
}))
# Error in paste0(group, "_col1") : object 'group' not found
答案 0 :(得分:4)
我不确定您对匿名函数的确切含义,但这是一种无需将函数f
分配给变量的方法:
d %>%
mutate(data = map2(data, group, ~rename_at(.x, 1, function(z) paste(.y, z, sep = "_"))))