Есть ли способ удалить символ по индексу из строки в R? - PullRequest
1 голос
/ 10 февраля 2020

У меня есть строки ДНК-последовательности, такие как: «ACGTTATATTTATGTTTTGGGATTTTAGCAGGAATGATTGGTACTGCTTTCAGTATGTTAATTAGATTAGAGTTATCGGGACCGGGATCAATGTTAGGGGATATCATTTATACAATGTTATTGTTACTGCTCATGCTTTTGTTATGATTTTTTTTTTAGTAATGCCTGTGATGATTGGGGGGTTTGGGAATTGGTTAGTACCATTATATATTGGTGCCCCAGATATGGCATTCCCTCGATTAAATAATATAAGTTTTTGATTATTACCGCCGGCTTTAAG»

1002 * Есть ли способ, я могу удалить буквы на 1008 * Удельный * позиции, например, в положении 20 в R?

Я думаю, что смогу использовать регулярные выражения, но я не думаю, что правильно понял выражение.

Спасибо

Ответы [ 2 ]

4 голосов
/ 10 февраля 2020

Кроме того, без использования выражения regex (и, вероятно, менее простого ответа tha @ akrun) вы можете использовать strsplit, чтобы извлечь каждый символ вашей строки как последовательность, удалить 20-й и вставить их обратно вместе.

seq <- "ACGTTATATTTATGTTTTGGGATTTTAGCAGGAATGATTGGTACTGCTTTCAGTATGTTAATTAGATTAGAGTTATCGGGACCGGGATCAATGTTAGGGGATATCATTTATACAATGTTATTGTTACTGCTCATGCTTTTGTTATGATTTTTTTTTTAGTAATGCCTGTGATGATTGGGGGGTTTGGGAATTGGTTAGTACCATTATATATTGGTGCCCCAGATATGGCATTCCCTCGATTAAATAATATAAGTTTTTGATTATTACCGCCGGCTTTAAG"

nchar(seq)
[1] 280

seq2 <- paste(unlist(strsplit(seq,""))[-20], collapse = "")
nchar(seq2)
[1] 279
4 голосов
/ 10 февраля 2020

Один из вариантов - захватить символы до 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

data

str1 <- "ACGTTATATTTATGTTTTGGGATTTTAGCAGGAATGATTGGTACTGCTTTCAGTATGTTAATTAGATTAGAGTTATCGGGACCGGGATCAATGTTAGGGGATATCATTTATACAATGTTATTGTTACTGCTCATGCTTTTGTTATGATTTTTTTTTTAGTAATGCCTGTGATGATTGGGGGGTTTGGGAATTGGTTAGTACCATTATATATTGGTGCCCCAGATATGGCATTCCCTCGATTAAATAATATAAGTTTTTGATTATTACCGCCGGCTTTAAG"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...