2011-08-25 27 views

Trả lời

36

bạn có thể sử dụng grepl với biểu thức chính quy:

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

Vì Andrey đã yêu cầu mẫu phù hợp với chuỗi * kết thúc * bằng .log, tôi tin rằng đây phải là X [grepl ("^ m. * \\. Log $", X)] – jbaums

+0

Chính xác. Tôi chỉ bỏ lỡ nó. Nó sẽ kết thúc bằng '$'. – kohske

19

Hãy thử điều này:

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

Một biến thể của việc này là sử dụng một glob chứ không phải là một biểu thức chính quy:

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

Tôi đã không nghe nói về glob2rx, nó tuyệt vời! – rsmith54

-1

Sử dụng các đường ống ...

library(tidyverse) 

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

Điều này không thêm gì; nó chỉ là một cú pháp thay thế cho hàm được cung cấp trong câu trả lời của kohske. Những người biết cách sử dụng đường ống nên biết cách điều chỉnh cú pháp, và những người không biết nóng sử dụng đường ống sẽ bị nhầm lẫn bởi câu trả lời này vì nó không đưa ra lời giải thích. – Gregor

+1

Nhưng ngay cả với một lời giải thích ngắn gọn về đường ống, nếu ai đó hỏi một câu hỏi "Làm thế nào để tôi tìm thấy trung bình của một vector' x' ", và ai đó trả lời' có nghĩa là (x) ',' x%>% mean' không phải là một câu trả lời khác. – Gregor

+0

thì chúng ta không cần ống dplyr ... phải không? – user3357059

Các vấn đề liên quan