首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在字符串中查找文本并用另一个字符串+R替换整个字符串

在字符串中查找文本并用另一个字符串+R替换整个字符串
EN

Stack Overflow用户
提问于 2014-10-22 20:18:30
回答 2查看 108关注 0票数 1

我在R程序中有一个向量/数组,我希望找到“风”(调理或小写),并将全文替换为“风”。

代码语言:javascript
复制
> b
 [1] "TORNADO"                   "TSTM WIND"                 "HAIL"                     
 [4] "FREEZING RAIN"             "SNOW"                      "ICE STORM/FLASH FLOOD"    
 [7] "SNOW/ICE"                  "WINDTER STORM"             "HURRICANE OPAL/HIGH WINDS"
[10] "THUNDERSTORM WINDS"  

例如,"TSTM风“就是”风“。“风暴”和“欧泊/强风”飓风...etc也将如此。

我试过了,但没有joy

代码语言:javascript
复制
> gsub("*WIND*","WIND",b,ignore.case=T)
 [1] "TORNADO"                   "TSTM WIND"                 "HAIL"                     
 [4] "FREEZING RAIN"             "SNOW"                      "ICE STORM/FLASH FLOOD"    
 [7] "SNOW/ICE"                  "WINDTER STORM"             "HURRICANE OPAL/HIGH WINDS"
[10] "THUNDERSTORM WINDS"       
>

这显示了那些符合我标准的人

代码语言:javascript
复制
> grepl("*WIND*",b,ignore.case=T)
 [1] FALSE  TRUE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-22 20:23:16

因为要用相同的字符串替换所有匹配项,所以可以使用[<-

代码语言:javascript
复制
b[grepl("WIND", b)] <- "WIND"

您也可以使用sub

代码语言:javascript
复制
sub(".*(WIND).*", "\\1", b)

两者都导致

代码语言:javascript
复制
 [1] "TORNADO"               "WIND"                  "HAIL"                 
 [4] "FREEZING RAIN"         "SNOW"                  "ICE STORM/FLASH FLOOD"
 [7] "SNOW/ICE"              "WIND"                  "WIND"                 
[10] "WIND" 
票数 2
EN

Stack Overflow用户

发布于 2014-10-22 20:22:24

最简单的解决方案是在stringr包中。

代码语言:javascript
复制
require(stringr)
str_replace_all(b, ignore.case(".*WIND.*"), "WIND")

这应该能做你想要的。像这样的例子就是为什么要做出弦乐。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26516360

复制
相关文章

相似问题

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