将stringr :: str_replace_all与字符向量一起使用

时间:2018-08-30 21:13:22

标签: r stringr

str_replace_all包中的

stringr使您可以通过将命名向量传递到replacement=参数中来进行多次替换。

library(stringr)
charz <- data.frame(a = c('A', 'B'), stringsAsFactors = F)

# Works fine
str_replace_all('ABC', c('A' = '1', 'B' = 2))
[1] "12C" 

我该如何使用数据帧中的值而不是裸字符向量呢?

# Does not work
# Should return "12C" as above

str_replace_all('ABC', c(charz$a[1] = '1', charz$a[2] = 2)) 
Error: unexpected '=' in "str_replace_all('ABC', c(charz$a[1] ="

str_replace_all('ABC', c(charz$a[1], charz$a[2]), c('1', '2'))
[1] "1BC" "A2C"

1 个答案:

答案 0 :(得分:1)

从该功能的帮助页面:

  

如果要对同一字符串应用多个模式和替换,请将命名矢量传递给模式。

我不确定为什么不能使用df$var即时命名矢量,但是希望在使用str_replace_all()之前可以这样做。

vec <- c("1", "2")
names(vec) <- charz$a

str_replace_all("ABC", vec)
> [1] "12C"