r - dplyr::rename_all & dplyr::if_else

标签 r string dplyr

我有以下数据框:

library(dplyr)

df <- data.frame(gh225 = "foo1", gh765 = "foo2", gauskper = "foo3") %>% 
  rename_all(funs(stringr::str_replace_all(., "gh", "v")))

我想结合使用 rename_all 和 if_else 但我找不到方法,逻辑应该是这样的(但有变量):

if_else(stringr::str_detect(columns, "au"), "id_per", columns)

话说回来,我想把gauskper这个名字改成id_per。

最佳答案

我们可以使用 rename_with 因为 rename_all 已弃用

library(dplyr)
library(stringr)
data.frame(gh225 = "foo1", gh765 = "foo2", gauskper = "foo3") %>% 
      rename_with(~ str_replace(., "au", "idper"), contains("au"))

关于if_else的使用,只需要一个lambda表达式即~

data.frame(gh225 = "foo1", gh765 = "foo2", gauskper = "foo3") %>%  
       rename_with(~ if_else(str_detect(., "au"), "id_per", .), everything())
  gh225 gh765 id_per
1  foo1  foo2   foo3

关于r - dplyr::rename_all & dplyr::if_else,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68875447/

相关文章:

r - 如何使长文本适合 Ggplot2 分面标题

r - 在 R 中按年份分组

r - 如何(有效地)在 R 中连接具有多个主键的表?

r - 在 R 中从循环或 lapply 按名称调用列表

r - dplyr 0.3.0.2 rename() 习惯用法在加载 reshape 包时不稳定

Java正则表达式替换大字符串中的多个文件路径

python - 迭代列表项时减少列表的长度

R:加速功能的建议(删除数据框中的重复项)

r - tidyr 从宽到长?

C# 等效于 C sscanf