R:GSUB在替换字符上循环
我试图用gsub替换一个字符串中的几个字符串。 在一般情况下,gsub(pattern,replacement,x)采用字符向量x,但pattern和replacement都假定为字符或正则表达式。模式和替换不能是字符向量 我可以使用循环粗略地实现这一点,但在我的例子中,模式和替换都是长向量,所以如果可能的话,我希望实现“向量化” 我目前的执行情况如下:R:GSUB在替换字符上循环,r,gsub,R,Gsub,我试图用gsub替换一个字符串中的几个字符串。 在一般情况下,gsub(pattern,replacement,x)采用字符向量x,但pattern和replacement都假定为字符或正则表达式。模式和替换不能是字符向量 我可以使用循环粗略地实现这一点,但在我的例子中,模式和替换都是长向量,所以如果可能的话,我希望实现“向量化” 我目前的执行情况如下: strs<-"apples.in.bed" replace.vect<-c("a","e","i") ne
strs<-"apples.in.bed"
replace.vect<-c("a","e","i")
new.char.vect<-c("1","2","3")
temp <- strs
for(i in 1:length(replace.vect)){
temp<-gsub(replace.vect[i], new.char.vect[i],temp)
}
# temp: "1ppl2s.3n.b2d"
strs您可以尝试Hmisc库中的sedit函数
library(Hmisc)
sedit(text = strs, replace.vect, new.char.vect)
#[1] "1ppl2s.3n.b2d"
现在已将其更改为使用不同的功能。希望这就是您所寻找的。这不会比chartr
更好。在replace上尝试此操作。vect@DavidArenburg我同意你的观点,认为sedit不比for循环好多少,不过你能扩展一下你的第一点吗?根据您所说的要返回的输出,您希望new.char.vectOP希望结果为(a)ppl2s.(a)r2.b(a)d
。你看不到被删除的帖子,但我已经用chartr
提出了解决方案,OP发表了这条评论。
library(Hmisc)
sedit(text = strs, replace.vect, new.char.vect)
#[1] "1ppl2s.3n.b2d"