首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文本向量之间的匹配和替换

文本向量之间的匹配和替换
EN

Stack Overflow用户
提问于 2016-02-03 03:52:11
回答 1查看 41关注 0票数 0

我有一个长文本向量(a.v)和一个短文本向量(b.v)。有些b.v单词在A.V中只存在一次,而另一些则可能出现几次,或者根本不存在。

我希望将A.v中存在的所有b.v单词都替换为“ed”。因此,“new.a.v”将具有相同数量的单词,但将使用“ed”代替b.v中存在的单词。

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

我该怎么办?我有过

代码语言:javascript
复制
 `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") 

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

代码语言:javascript
复制
x<- c( "pet", "pet", "pet", "bear", "pet", "pet", "sky", "house", "house", "girl", "boy" ,"house")

我能做到

代码语言:javascript
复制
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作为替换的“模式”。它将检查第一个单词是否在x中,如果存在,则替换它,如果不存在,则移动到pet.animal中的第二个pet.animal,依此类推。

让事情变得更复杂的是,pet.animal和house.things的…长度不同

EN

回答 1

Stack Overflow用户

发布于 2016-02-15 01:07:38

这对pethouse都有效

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

https://stackoverflow.com/questions/35162624

复制
相关文章

相似问题

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