>我有一个长文本向量(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
和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"