这是我的数据:
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
设置 m
和 n
的名称,如下所示:
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/