我在R编程中有这个矢量/数组,我想找到" WIND" (upercase或小写)并用" WIND"替换整个文本。
> 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 WIND"会来#34; WIND"。那么" WINDTER STORM"和" HURRICANO OPAL / HIGH WINDS" ...等
我试过这个但没有快乐
> 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"
>
这显示符合我标准的那些
> grepl("*WIND*",b,ignore.case=T)
[1] FALSE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE
答案 0 :(得分:2)
由于您要使用相同的字符串替换所有匹配项,因此可以使用[<-
b[grepl("WIND", b)] <- "WIND"
您也可以使用sub
sub(".*(WIND).*", "\\1", b)
两者都导致
[1] "TORNADO" "WIND" "HAIL"
[4] "FREEZING RAIN" "SNOW" "ICE STORM/FLASH FLOOD"
[7] "SNOW/ICE" "WIND" "WIND"
[10] "WIND"
答案 1 :(得分:0)
最简单的解决方案是在stringr
包中。
require(stringr)
str_replace_all(b, ignore.case(".*WIND.*"), "WIND")
这应该做你想要的。像这样的案例就是制作弦乐器的原因。