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"
答案 0 :(得分:1)
从该功能的帮助页面:
如果要对同一字符串应用多个模式和替换,请将命名矢量传递给模式。
我不确定为什么不能使用df$var
即时命名矢量,但是希望在使用str_replace_all()
之前可以这样做。
vec <- c("1", "2")
names(vec) <- charz$a
str_replace_all("ABC", vec)
> [1] "12C"