r - 在嵌套的 tibble R 中重命名数据列时,取消引用无法在 mutate 和 map2 中找到变量

标签 r dplyr tidyr purrr rlang

好的,我只是想根据标识符/字符列重命名嵌套 tibble 中的列:

MWE:

library(magrittr)
iris %>% 
  tibble::as_tibble() %>%
  tidyr::nest(-Species) %>%
  dplyr::mutate(
    Species = as.character(Species),
    data = purrr::map2(data, Species,
                       ~dplyr::rename(.x, !!.y := Sepal.Width)))

但这会返回错误:

Error in quos(..., .named = TRUE) : object '.y' not found

我尝试使用 rlang 中的 ensym 以及 !!:= 的各种组合成功。 也就是说,数据列中的第一个 tibble 应该将 Sepal.Width 列重命名为 setosa,第二个为 versicolor,最后一个 tibble Sepal.Widht 应该重命名为 virginica。

最佳答案

您可以不使用公式表示法:

library(magrittr)
irisNest <- iris %>%
  tibble::as_tibble() %>%
  tidyr::nest(-Species) %>%
  dplyr::mutate(Species = as.character(Species))

f <- function(x,y) {dplyr::rename(x, !!y := Sepal.Width)}

irisCheck <- dplyr::mutate(irisNest,
              data = purrr::map2(data, Species, f))

关于r - 在嵌套的 tibble R 中重命名数据列时,取消引用无法在 mutate 和 map2 中找到变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081289/

相关文章:

返回top_n后的原始数据集

R 根据多个条件与 data.frame 相交

r - 增加 igraph 节点之间的距离

r - 如何使用 dplyr 访问不在默认 Oracle 模式中的表?

r - mutate_at 在具有不同功能的多组列上

r - 是否有更优雅的方法将参差不齐的数据转换为整洁的数据框

r - 使用 dplyr 收集将评论与值匹配

R:更改pivot_wider() 中的列名——前缀的后缀

R生存分析: error in survreg using Weibull

R:iGraph数据对象中如何从根节点遍历到每个叶子节点并获取路径?