[R-br] Regexp no grep para linhas que não iniciam com sequência

Éder Comunello comunello.eder em gmail.com
Terça Outubro 4 09:49:15 BRT 2016


Senhores, bom dia!

Considerando o vetor:

test <- c("SPA100", "MSA200", "MSB300", "MSC400", "MSC500",
          "PRA100", "PRC200", "MGV100", "MTJ400", "MTK500")

Posso obter facilmente os valores iniciados com a sequência "MS":
grep("^MS", test, val=T)

# [1] "MSA200" "MSB300" "MSC400" "MSC500"


Uma primeira tentativa, sem sucesso, para obter linhas que não iniciam com
a sequência foi:
grep("^!(MS)", test, val=T)
# character(0)

Consegui uma solução estranha com:
grep("^[^M]|^M[^S]", test, val=T)

# [1] "SPA100" "PRA100" "PRC200" "MGV100" "MTJ400" "MTK500"


Mas essa solução é limitada quando usando strings maiores, tal como "MSC".

Embora existam alternativas como:
test[-grep("^MSC", test)]

# [1] "SPA100" "MSA200" "MSB300" "PRA100" "PRC200" "MGV100" "MTJ400" "MTK500"


Gostaria de saber se há uma forma fácil de fazer isso usando diretamente
uma regexp.

Grato,

================================================
Éder Comunello
Researcher at Brazilian Agricultural Research Corporation (Embrapa)
DSc in Agricultural Systems Engineering (USP/Esalq)
MSc in Environ. Sciences (UEM), Agronomist (UEM)
---
Embrapa Agropecuária Oeste, Dourados, MS, Brazil |<O>|
================================================
GEO, -22.2752, -54.8182, 408m
UTC-04:00 / DST: UTC-03:00
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20161004/ed7972df/attachment.html>


Mais detalhes sobre a lista de discussão R-br