r - stringr:通过字符向量提供模式来替换字符串

标签 r tidyverse stringr

这是我的数据:

df <- tibble::tribble(
         ~A,  ~B,
        "C", "G",
        "D", "H",
        "E", "I",
        "F", "J")

value1 <- "D"

value2 <- "C"

并且,在变量 A 中,我想用“m”和“n”替换 D 和 C,类似这样的东西,但它不起作用!

df %>% mutate(X = A %>% str_replace_all(c(value1 = "m", value2 = "n")))

我想要的输出是:

df %>% mutate(X = A %>% str_replace_all(c("D" = "m", "C" = "n")))

但是我不想手动提供“D”和“C”,而是想以编程方式提供这些,符合...使用 value1 和 value2。

我该怎么做?

最佳答案

您可以尝试使用 setNames 设置 mn 的名称,如下所示:

library(dplyr)
library(stringr)
df %>% mutate(X = A %>% str_replace_all(setNames(c("m","n"), c(value1, value2))))

# A tibble: 4 x 3
#  A     B     X    
#  <chr> <chr> <chr>
#1 C     G     n    
#2 D     H     m    
#3 E     I     E    
#4 F     J     F  

然后检查它是否等于您想要的结果:

identical(
          df %>% mutate(X = A %>% str_replace_all(c("D" = "m", "C" = "n"))),
          df %>% mutate(X = A %>% str_replace_all(setNames(c("m","n"), c(value1, value2)))))
#[1] TRUE

我还包括了您使用的其他软件包:dplyr 和 stringr

关于r - stringr:通过字符向量提供模式来替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50339803/

相关文章:

根据其他列替换数据框中的列值

r - 与unnest_tokens相反

r - 模糊连接与 R 中的部分字符串匹配

R tidyr : use separate function to separate character column with comma-separated text into multiple columns using RegEx

r - 如何提取和删除字符串?所以我可以让相似的表达式匹配 1 次而不是多次

正则表达式检测是否所有字母字符都是大写

r - 具有固定(文字)字符的矢量化 stringr

variables - R函数中的全局变量

r - 从一个 df 绘制点,从另一个 df 绘制误差条

使用 dplyr rename(across(