首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stringr str_replace on multiple patterns and replacements?

stringr str_replace on multiple patterns and replacements?
EN

Stack Overflow用户
提问于 2020-02-09 01:01:13
回答 4查看 3.6K关注 0票数 2

我试过了

代码语言:javascript
复制
> str_replace("abcdef", c("b", "d"), c(b="B", d="D"))
[1] "aBcdef" "abcDef"

希望

代码语言:javascript
复制
[1] "aBcDef"

如何通过一个对stringr::str_replace的函数调用将每个模式替换为特定的替换模式

EN

回答 4

Stack Overflow用户

发布于 2020-02-09 03:43:21

对于str_replace,可以选择使用reduce2进行包装

代码语言:javascript
复制
library(stringr)
library(purrr)
reduce2(c('b', 'd'), c('B', 'D'),  .init = 'abcdef', str_replace)
#[1] "aBcDef"

或使用匿名函数调用

代码语言:javascript
复制
reduce2(c('b', 'd'), c('B', 'D'),  .init = 'abcdef',
         ~ str_replace(..1, ..2, ..3))
#[1] "aBcDef"
票数 9
EN

Stack Overflow用户

发布于 2020-02-09 01:17:38

它匹配每个字符,如果它等于b,它用B替换它,如果它等于d,它用D替换它,否则它保持原样。

代码语言:javascript
复制
library(gsubfn)
gsubfn(".", list(b="B", d="D"), "abcdef")
## [1] "aBcDef"

这些也是有效的:

代码语言:javascript
复制
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"
票数 4
EN

Stack Overflow用户

发布于 2021-07-09 12:42:33

chartr()解决方案对我来说也是新的,但我想用多个字符代替单个字符。最终找到了一个非常简单的stringr (v1.4.0)解决方案。事实上,它在帮助页面中,一旦它意识到这需要str_replace_all

代码语言:javascript
复制
# 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"
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60129058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档