我有一个长文本向量(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中的第二个单词,依此类推。
只是为了让事情变得更复杂,pet.animal和house.things的长度不一样......
答案 0 :(得分:0)
这适用于pet
和house
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"