在R中有效地用索引替换字符串元素

时间:2014-07-01 12:32:39

标签: regex string r replace

我想有效character对象中的元素替换为特定位置的其他特定元素(这些地方是我知道的索引,因为它们是{{1}的结果功能)。

我想要一些gregexpr函数,其工作方式如下:

foo

给我:

foo("qwerty", c(1,3,5), c("z", "x", "y"))

我搜索了[1] "zwxryy" 包裹文件pdf,但没有想到我的想法。提前感谢您的任何建议。

3 个答案:

答案 0 :(得分:1)

例如:

xx <- unlist(strsplit("qwerty",""))
xx[c(1,3,5)] <- c("z", "x", "y")
paste0(xx,collapse='')
[1] "zwxryy"

答案 1 :(得分:0)

如果你没有那么多要替换的字符,你也可以尝试下面的那个

  st1 <- "qwerty"
 gsub("^.(.).(.).","z\\1x\\2y", st1)
#[1] "zwxryy"

答案 2 :(得分:0)

stringi包中,stri_sub函数的作用如下:

a <- "12345"
stri_sub(a, from=c(1,3,5),len=1) <- letters[c(1,3,5)]
a
## [1] "a2345" "12c45" "1234e"
它几乎是你想要的。只需在循环中使用它:

a <- "12345"
for(i in c(1,3,5)){
    stri_sub(a, from=i,len=1) <- letters[i] 
}
a
## [1] "a2c4e"

请注意,此类功能在我们的TODO列表中,请检查: https://github.com/Rexamine/stringi/issues?state=open