在文本矢量之间进行匹配和替换

  • 本文关键字:替换 文本 之间 regex r
  • 更新时间 :
  • 英文 :


>我有一个长文本向量(a.v(和一个短文本向量(b.v(。 有些b.v单词在a.v中存在 - 有些只存在一次,有些可以很少,或者根本不存在。

我希望 A.v 中存在的所有 b.v 单词都将替换为"ed"。因此,"new.a.v"将具有相同数量的单词,但不是b.v中存在的单词,而是"ed"。

我尝试了 grep 并替换解决方案变体,但没有成功。如果 b.v 只包含 1 个单词,我想这更容易,但 b.v 包含 70 个单词,打字并单独替换每个单词不是一个有趣的选择。

我该怎么办?我有

 `x<- c( "dog", "cat", "cat", "bear", "dog", "fish", "sky", "table", "chair", "girl", "boy" ,"picture")
 pet.animal<- c( "dog", "cat", "fish" )
 house.things<- c("table" ,"chair", "picture")
 x<- str_replace_all(x,"dog", "pet") 
 x<- str_replace_all(x,"cat", "pet") 

我正在寻找的最终产品是:

x<- c( "pet", "pet", "pet", "bear", "pet", "pet", "sky", "house", "house", "girl", "boy" ,"house")

我能做到

x<- c( "dog", "cat", "cat", "bear", "dog", "fish", "sky", "table", "chair", "girl", "boy" ,"picture")
pet.animal<- c( "dog", "cat", "fish" )
house.things<- c("table" ,"chair", "picture")
x<- str_replace_all(x,"dog", "pet") 
x<- str_replace_all(x,"cat", "pet") 

但是比我需要更换每一个... 所以我正在寻找一种使用 pet.animal 作为替换"模式"的方法。 查看第一个 pet.animal 是否在 x 中的东西,如果存在,请替换它,如果不移动到 pet.animal 中的第二个单词,依此类推。

只是为了让事情变得更复杂,宠物动物和房子的东西长度不一样......

适用于pethouse

 v<-gsub(paste(house.things, collapse='|'), 'house', gsub(paste(pet.animal, collapse='|'), 'pet', x))
>v
#[1] "pet"   "pet"   "pet"   "bear"  "pet"   "pet"   "sky"   "house" "house" "girl" 
#[11] "boy"   "house"

最新更新