Mam następujący wektor w R:Jak filtrować wektor smyczki R oparty na ciąg pasujący
X <- c("mama.log", "papa.log", "mimo.png", "mentor.log")
Jak retieve inny wektor, który zawiera tylko elementy zaczynające się od „m”, a kończąc na " .log"?
Mam następujący wektor w R:Jak filtrować wektor smyczki R oparty na ciąg pasujący
X <- c("mama.log", "papa.log", "mimo.png", "mentor.log")
Jak retieve inny wektor, który zawiera tylko elementy zaczynające się od „m”, a kończąc na " .log"?
można użyć grepl
z wyrażenia regularnego:
X[grepl("^m.*\\.log", X)]
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"
Nie słyszałem o glob2rx, jest świetnie! – rsmith54
Korzystanie z rur ...
library(tidyverse)
c("mama.log", "papa.log", "mimo.png", "mentor.log") %>%
.[grepl("^m.*\\.log$", .)]
[1] "mama.log" "mentor.log"
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
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
to nie potrzebujemy rur Dplyr ... prawda? – user3357059
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
Dokładnie. Po prostu tęskniłem. Powinno się kończyć na '$'. – kohske