2011-08-25 10 views

Odpowiedz

36

można użyć grepl z wyrażenia regularnego:

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

Jako, że Andrey poprosił o wzór pasujący do ciągów * kończących * w .log, uważam, że powinno to być X [grepl ("^ m. * \\. Log $", X)] – jbaums

+0

Dokładnie. Po prostu tęskniłem. Powinno się kończyć na '$'. – kohske

19

Spróbuj tego:

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

Odmiana ta jest użycie glob zamiast wyrażenia regularnego:

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

Nie słyszałem o glob2rx, jest świetnie! – rsmith54

-1

Korzystanie z rur ...

library(tidyverse) 

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

To nic nie dodaje; jest to tylko alternatywna składnia funkcji podanej w odpowiedzi kohske. Ludzie, którzy wiedzą, jak używać potoków, powinni wiedzieć, jak dostosować już składnię, a ludzie, którzy nie znają gorących w użyciu rurek, będą zdezorientowani tą odpowiedzią, ponieważ nie oferują żadnego wyjaśnienia. – Gregor

+1

Ale nawet z krótkim wyjaśnieniem rur, jeśli ktoś zadał pytanie "Jak znaleźć średnią wektora" x ", a ktoś odpowie" średnia (x) "," x%>% średnia "nie jest inna odpowiedź. – Gregor

+0

to nie potrzebujemy rur Dplyr ... prawda? – user3357059