2011-08-25 167 views

回答

36

可以使用grepl用正則表達式:

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

由於Andrey要求在.log中匹配strings * ending *的模式,我相信這應該是X [grepl(「^ m。* \\。log $」,X)] – jbaums

+0

準確地說。我錯過了它。它應該以'$'結尾。 – kohske

19

試試這個:

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

這方面的一個變化是使用一個水珠,而不是一個正則表達式:

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

我沒有聽說過glob2rx,太棒了! – rsmith54

-1

使用管道...

library(tidyverse) 

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

這不會增加任何東西;它只是kohske答案中提供的函數的替代語法。知道如何使用管道的人應該知道如何適應語法,而不知道使用管道的人會被這個答案困惑,因爲它沒有提供任何解釋。 – Gregor

+1

但即使對管道做了簡單的解釋,如果有人問了一個問題:「我如何找到一個向量的平均值?」,並且有人回答「mean(x)」,「x%>%mean」不是不同的答案。 – Gregor

+0

然後我們不需要dplyr管道...對不對? – user3357059