2014-02-09 14 views
1

Вот мои данные:R: не может grep() на символ «+»?

> rep$strand 
    [1] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    [58] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + 
    [115] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
    [172] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 
    [229] + + + + + + + + + + + + + + + + + + + + 

В надежде на отделение "+" от "-", я попытался запустить следующие команды.

grepl("-",rep$strand) #this gives me a list of TRUE/FALSE that seems correct 
grepl("+",rep$strand) #this is all TRUE for some mysterious reason 

Я не могу понять, почему же grepl() команда будет работать на "-", но не на "+".

+0

'+' является регулярное выражение metachar. вам нужно будет избежать этого, чтобы удалить его «метаносность». –

+0

... который выполняется с обратной косой чертой. Двое из них. – Gregor

+0

или grepl («+», «some + in here», fixed = TRUE) – Adrian

ответ

6

Применение

grepl("\\+", rep$strand) 

или

grepl("+", rep$strand, fixed = TRUE) 

или

"+" == rep$strand 
+0

+1 для полноты, но для первого, было бы правильнее использовать '^ \\ + $', чтобы быть эквивалентным двум другим? – BrodieG

+0

@BrodieG Первые две команды эквивалентны. Я согласен, что в первой команде можно использовать '^ \\ + $', чтобы сделать ее эквивалентной третьей. Однако вторая команда не может быть эквивалентна третьей. –