我想在函数中使用 rename_ (或 rename ?)来重命名小标题中的列。例如,假设我有 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/

10-11 07:49