我想用x替换以下 vector 中每个字符串的第二个字母。

ba <- c('ba','aba','baba')
# goal: bx, axa, bxba

通常我只会使用substr(ba,2,2) <- 'x'。但是由于过于复杂的原因而无法在此处介绍,我试图避免使用substr,而是寻求其他解决方案。因此,我尝试将字符串拆分并替换每个列表的第二个元素。但我收到此错误消息。
ba2 <- strsplit(ba,'')
lapply(ba2,function(x) x[2]) <- 'x'
# Error in lapply(ba2, function(x) x[2]) <- "x" :
# could not find function "lapply<-"

我该如何解决此问题?有没有一种方法可以将lapply<-结合使用?

最佳答案

使用正则表达式替换:

sub("^(.).", "\\1x", ba)

说明:
  • ^-单词
  • 的开头
  • (.)-取一个任意字符,并记住它
  • 。另一个任意字符
  • \ 1-用记忆的字符
  • 替换
  • ...和'x'
  • 关于r - r:应用值分配,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46545084/

    10-12 17:45