在 R 中替换字符串的不同部分

标签 r string

substring() <- valuesubstr() <- value每个单词只能替换单个字符范围。我想知道如果我想替换字符串中的几个不相交的字符,最好的解决方案是什么。我当前的解决方案如下所示。

string <- "a string"
splitted <- strsplit(string,"",T)[[1]]
splitted[c(1,5,8)] <- c("that", "", "ks")
paste(splitted, collapse="")
[1] "that stinks"

当然,这是一个随机的例子。我实际上想替换基因中数百个不同位置的核苷酸。请注意,单个字符(碱基)始终会被单个字符替换,这与我此处的示例相反。

或者我可以调用 substr() <- value连续地在循环中(我认为如果我使用 substr() 就无法避免循环,因为我需要多次处理先前的结果),但这可能会更慢。

感谢您的建议。

编辑:我的示例具有误导性,这是我的测试函数

replaceCharsInString <-function(string, positions, replacement) {
    splitted <- strsplit(string,"",T)[[1]]
    splitted[positions] <- replacement   #'replacement' is a character vector
    paste(splitted,collapse="")
}

> replaceCharsInString("ACCTTTAAGAGATTTAGGGAGA", c(2,5,7), c("G","C","C"))
[1] "AGCTCTCAGAGATTTAGGGAGA"

最佳答案

我不太明白你到底在寻找什么,因为你甚至说你的例子并不代表你实际在做什么。

可以通过使用也称为捕获组的 () 来实现:

gsub("(.*)(this)(.*)", '\\1him\\3', 'get this off my desk')
[1] "get him off my desk"

括号创建组。然后,R 可以使用双反斜杠表示法引用捕获的组编号:\\1\\2 等。这里我有 3组

  1. 获取
  2. 这个
  3. 离开我的办公 table

在我的代码中,我将 this(第 2 组)替换为 him

关于在 R 中替换字符串的不同部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32404667/

相关文章:

c - 格式化和未格式化字符串 C

javascript - 在 Node js 中从字符串创建对象

替换 R 中的循环 : multivariate k-nearest neighbor regression example

r - 有没有一种简单的方法可以使用 Windows 10 在 R Markdown 上运行 bash 脚本?

c++ - 将用户输入的前两个单词按一个空格拆分,然后存储剩余的短语(C++)

java - 在二维字符数组中查找单词

c - 动态增加字符数组的维数

R - 从大型栅格(不包括 NA 值)高效创建数据帧

r - 如何在没有数据或仅使用预测系数的情况下保存 glm 结果?

r - rcpp中的排列顺序