2014-09-28 4 views
1

Я хочу, чтобы удалить -5p часть моих данных ниже:удалить часть строки - регулярное выражение

[1] mmu-miR-322-5p mmu-miR-10b-5p mmu-miR-10a-5p

Я попытался это gsub(".-5p","",data) но потом забирали более 5р

+2

' gsub ("- 5p $", "", data) # [1] "mmu-miR-322" "mmu-miR-10b" "mmu-miR-10a" ' – akrun

+0

- это' [1] mmu-miR- 322-5p mmu-miR-10b-5p mmu-miR-10a-5p' настоящая строка или вектор? –

+0

«это забрало больше» - более 1 символа, из-за '.' "Соответствуют чему-нибудь" подстановочные знаки? (Если да, то почему вы его включили?) – usr2564301

ответ

2

. бы аналогично предыдущему символу. т.е. ваше регулярное выражение .-5p будет соответствовать 2-5p, b-5p, a-5p во входном векторе. Поскольку строка -5p находится на последнем, вы можете использовать конец линейного якоря $ после -5p. Обратите внимание, что он удалит только -5p. Если он присутствует в середине или вначале, то он ничего не сделает.

sub("-5p$","",data) 

Пример:

> s <- c("mmu-miR-322-5p", "mmu-miR-10b-5p", "mmu-miR-10a-5p") 
> s 
[1] "mmu-miR-322-5p" "mmu-miR-10b-5p" "mmu-miR-10a-5p" 
> sub("-5p$","", s) 
[1] "mmu-miR-322" "mmu-miR-10b" "mmu-miR-10a" 
+0

Извините, не ударило – BioMan

+0

Как вы укажете «или» в gsub. пример: удалите 5p "или" 3p – BioMan

+0

'sub ('- [35] p', '', x)' – hwnd

1

В обычном осуществлении экспрессии точка . является метасимволом со специальным значением. В одиночку он будет соответствовать любому одиночному символу, кроме последовательности строк новой строки, поэтому причина, по которой он вызывает лишний символ.

Поскольку у вас есть один случай -5p в каждом из ваших векторных элементов, sub - это все, что вам нужно здесь.

> x <- c('mmu-miR-322-5p', 'mmu-miR-10b-5p', 'mmu-miR-10a-5p') 
> sub('-5p', '', x) 
# [1] "mmu-miR-322" "mmu-miR-10b" "mmu-miR-10a" 
1

Вы можете даже использовать замену оператора в PERL один лайнер и удалить -5p во всех случаях из входного файла с помощью прихлебывая:

Perl Один лайнер Код:

perl -0777 -lne "if($_ =~ s/-5p//isg) { print $_;} else { print $_;}" InputFile 
+0

это R. Вам нужно включить некоторые коды, относящиеся к языку R. –

Смежные вопросы