我有一个长文本向量(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个单词,打字并分别替换每个单词并不是一个有趣的选择。
我该怎么办?我有过
`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作为替换的“模式”。它将检查第一个单词是否在x中,如果存在,则替换它,如果不存在,则移动到pet.animal中的第二个pet.animal,依此类推。
让事情变得更复杂的是,pet.animal和house.things的…长度不同
发布于 2016-02-15 01:07:38
这对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"https://stackoverflow.com/questions/35162624
复制相似问题