stringr包中的str_replace_all允许您通过将命名向量传递到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"发布于 2018-08-31 10:10:05
在函数的帮助页面中:
如果要对同一字符串应用多个模式和替换,请将命名向量传递给pattern。
我不确定为什么您不能引用df$var来动态命名一个向量,但希望在使用str_replace_all()之前这样做对您来说是可行的。
vec <- c("1", "2")
names(vec) <- charz$a
str_replace_all("ABC", vec)
> [1] "12C"https://stackoverflow.com/questions/52105442
复制相似问题