我试过了
> str_replace("abcdef", c("b", "d"), c(b="B", d="D"))
[1] "aBcdef" "abcDef"希望
[1] "aBcDef"如何通过一个对stringr::str_replace的函数调用将每个模式替换为特定的替换模式
发布于 2020-02-09 03:43:21
对于str_replace,可以选择使用reduce2进行包装
library(stringr)
library(purrr)
reduce2(c('b', 'd'), c('B', 'D'), .init = 'abcdef', str_replace)
#[1] "aBcDef"或使用匿名函数调用
reduce2(c('b', 'd'), c('B', 'D'), .init = 'abcdef',
~ str_replace(..1, ..2, ..3))
#[1] "aBcDef"发布于 2020-02-09 01:17:38
它匹配每个字符,如果它等于b,它用B替换它,如果它等于d,它用D替换它,否则它保持原样。
library(gsubfn)
gsubfn(".", list(b="B", d="D"), "abcdef")
## [1] "aBcDef"这些也是有效的:
gsubfn("[bd]", list(b="B", d="D"), "abcdef")
## [1] "aBcDef"
gsubfn("[bd]", toupper, "abcdef")
## [1] "aBcDef"
# only needs base R
chartr("bd", "BD", "abcdef")
## [1] "aBcDef"发布于 2021-07-09 12:42:33
chartr()解决方案对我来说也是新的,但我想用多个字符代替单个字符。最终找到了一个非常简单的stringr (v1.4.0)解决方案。事实上,它在帮助页面中,一旦它意识到这需要str_replace_all。
# one approach that both: answers the original question with stringr
str_replace_all("abcdef", c(b="B", d="D"))
[1] "aBcDef"
# and answers a more general question
str_replace_all("abcdef", c(b="BB", d="DDD"))
[1] "aBBcDDDef"https://stackoverflow.com/questions/60129058
复制相似问题