вставьте определенный текст в строки, которые его не имеют - PullRequest
0 голосов
/ 15 октября 2018

Я хотел бы вставить "miR" в строки, у которых уже нет "miR", и пропустить те, которые имеют его.

паста ("miR", ....)

in

c("miR-26b", "miR-26a", "1297", "4465", "miR-26b", "miR-26a")

out

c("miR-26b", "miR-26a", "miR-1297", "miR-4465", "miR-26b", "miR-26a")

Ответы [ 2 ]

0 голосов
/ 15 октября 2018
vec <- c("miR-26b", "miR-26a", "1297", "4465", "miR-26b", "miR-26a")

sub("^(?!miR)(.*)$", "miR-\\1", vec, perl = T)

#[1] "miR-26b"  "miR-26a"  "miR-1297" "miR-4465" "miR-26b"  "miR-26a"

Если вы хотите узнать больше:

  • введите ?sub в консоль R
  • изучите регулярное выражение, присмотритесь к negative look ahead,capturing groups ОБУЧЕНИЕ РЕГЕКСА
  • Я использовал perl = T, потому что если я не получаю, я получаю ошибку. ПРОЧИТАЙТЕ БОЛЬШЕ
0 голосов
/ 15 октября 2018

Одним из способов может быть удаление «miR», если оно присутствует в начале строки с использованием sub, и вставка его в каждую строку независимо от того,

paste0("miR-", sub("^miR-","", x))

#[1] "miR-26b"  "miR-26a"  "miR-1297" "miR-4465" "miR-26b"  "miR-26a" 

данные

x <- c("miR-26b", "miR-26a", "1297", "4465", "miR-26b", "miR-26a")
...