r - 如何在 dplyr 中进行功能重命名?

标签 r dplyr lazy-evaluation tidyverse

我想在函数中使用 rename_(或 rename?)来重命名 tibble 中的列。例如,假设我在如下函数中有 rename(as_tibble(iris), petal = Petal.Width)`

rr <- function(toRename, newName, dt) { 
  rename_(dt, .dots = rlang::expr(list(!! newName = toRename)))
          }

我可以在其中传递要重命名的数据集,并将重命名的元素作为字符串传递给我可以调用的数据集:

rr('petal', 'Petal.Width', dt = as_tibble(iris))

Petal.Width 重命名为 petal

我该怎么做?

最佳答案

我们可以将 sym:= 一起使用

rr <- function(dt, oldName, newName) { 
 rename(dt, !!rlang::sym(newName) := !! rlang::sym(oldName))
      }

rr(dt = as_tibble(iris), oldName = 'Petal.Width', newName = 'petal') %>%
      head(., 2)
# A tibble: 2 x 5
#  Sepal.Length Sepal.Width Petal.Length petal Species
#         <dbl>       <dbl>        <dbl> <dbl> <fctr> 
#1         5.10        3.50         1.40 0.200 setosa 
#2         4.90        3.00         1.40 0.200 setosa 

关于r - 如何在 dplyr 中进行功能重命名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48676397/

相关文章:

r - 在 R 中,每个 ID 重复列值的平均数量是多少?

r - 在sparklyr (R+spark) 中提取列名称的简单命令

haskell - 类型强制 "strict/imperitive"Haskell 子集/版本

scala - Spark,在 DataFrame(或 RDD)上多次应用过滤器,无需冗余评估

haskell - 为什么 Haskell 中的 `forever` 是这样实现的?

原始(二进制)数据太大而无法写入磁盘。如何按 block 写入磁盘(追加)?

r - 根据度数排序节点并使用 igraph 在 R 中操作

r - 在R中显示栅格图像的最简单方法是什么?

r - 如何在 R 中显示并行计算中的代码进度?

r - 在 data.table 中的滞后组中匹配