2011-08-25 17 views

risposta

36

è possibile utilizzare grepl con l'espressione regolare:

X[grepl("^m.*\\.log", X)] 
+1

Come Andrey ha chiesto un pattern per far corrispondere stringhe * ending * in .log, credo che questo dovrebbe essere X [grepl ("^ m. * \\. Log $", X)] – jbaums

+0

Esattamente. L'ho appena perso. Dovrebbe finire con '$'. – kohske

19

Prova questa:

grep("^m.*[.]log$", X, value = TRUE) 
## [1] "mama.log" "mentor.log" 

Una variante di questo è quello di utilizzare un glob piuttosto che un'espressione regolare:

grep(glob2rx("m*.log"), X, value = TRUE) 
## [1] "mama.log" "mentor.log" 
+1

Non avevo mai sentito parlare di glob2rx, è fantastico! – rsmith54

-1

Utilizzo dei tubi ...

library(tidyverse) 

c("mama.log", "papa.log", "mimo.png", "mentor.log") %>% 
.[grepl("^m.*\\.log$", .)] 
[1] "mama.log" "mentor.log" 
+1

Questo non aggiunge nulla; è solo una sintassi alternativa per la funzione fornita nella risposta di kohske. Le persone che sanno usare le pipe dovrebbero sapere già come adattare la sintassi, e le persone che non conoscono l'uso delle pipe sarebbero confuse da questa risposta in quanto non offre alcuna spiegazione. – Gregor

+1

Ma anche con una breve spiegazione delle pipe, se qualcuno fa una domanda "Come trovo la media di un vettore' x' ", e qualcuno risponde' mean (x) ',' x%>% mean' non è un risposta diversa – Gregor

+0

quindi non abbiamo bisogno di pipe dplyr ... giusto? – user3357059

Problemi correlati