我有一串DNA序列,例如: “ ACGTTATATTTATGTTTTGGGATTTTAGCAGGAATGATTGGTACTGCTTTCAGTATGTTATATAGATTAGATTAGAGTTATCGGGACCGGGATCAATGTTAGGGGATATCATTTATACAATGTTATTGTTACTGCTCATGCTTTTGTTATGATTTTTTTTTTAGTAATGCCTGTTGTGGGTGTGTGATTACCAGTGGGTAGCCATTG
有没有一种方法可以删除特定位置的字母,例如在R的第20位?
我认为我也许可以使用正则表达式,但我认为表达方式不正确。
谢谢
答案 0 :(得分:4)
一种选择是捕获直到19个字符,删除第20个元素并捕获其余字符
str2 <- sub("^(.{1,19}).(.*)", "\\1\\2", str1)
或带有一个捕获组
sub("^(.{1,19}).", "\\1", str1)
或者另一个选择是str_sub
library(stringr)
nchar(str1)
#[1] 280
str_sub(str1, 20, 20) <- ""
nchar(str1)
#[1] 279
str1 <- "ACGTTATATTTATGTTTTGGGATTTTAGCAGGAATGATTGGTACTGCTTTCAGTATGTTAATTAGATTAGAGTTATCGGGACCGGGATCAATGTTAGGGGATATCATTTATACAATGTTATTGTTACTGCTCATGCTTTTGTTATGATTTTTTTTTTAGTAATGCCTGTGATGATTGGGGGGTTTGGGAATTGGTTAGTACCATTATATATTGGTGCCCCAGATATGGCATTCCCTCGATTAAATAATATAAGTTTTTGATTATTACCGCCGGCTTTAAG"
答案 1 :(得分:4)
或者,不使用regex
表达式(并且可能不那么直接@tharun的答案),您可以使用strsplit
提取字符串的每个字符作为序列,删除第20个字符并粘贴他们一起回来。
seq <- "ACGTTATATTTATGTTTTGGGATTTTAGCAGGAATGATTGGTACTGCTTTCAGTATGTTAATTAGATTAGAGTTATCGGGACCGGGATCAATGTTAGGGGATATCATTTATACAATGTTATTGTTACTGCTCATGCTTTTGTTATGATTTTTTTTTTAGTAATGCCTGTGATGATTGGGGGGTTTGGGAATTGGTTAGTACCATTATATATTGGTGCCCCAGATATGGCATTCCCTCGATTAAATAATATAAGTTTTTGATTATTACCGCCGGCTTTAAG"
nchar(seq)
[1] 280
seq2 <- paste(unlist(strsplit(seq,""))[-20], collapse = "")
nchar(seq2)
[1] 279