我有R中的以下矢量:如何基於字符串匹配過濾字符串中R的矢量
X <- c("mama.log", "papa.log", "mimo.png", "mentor.log")
如何retieve僅包含元素開始與「m」和結尾另一個載體「的.log「?
我有R中的以下矢量:如何基於字符串匹配過濾字符串中R的矢量
X <- c("mama.log", "papa.log", "mimo.png", "mentor.log")
如何retieve僅包含元素開始與「m」和結尾另一個載體「的.log「?
可以使用grepl
用正則表達式:
X[grepl("^m.*\\.log", X)]
試試這個:
grep("^m.*[.]log$", X, value = TRUE)
## [1] "mama.log" "mentor.log"
這方面的一個變化是使用一個水珠,而不是一個正則表達式:
grep(glob2rx("m*.log"), X, value = TRUE)
## [1] "mama.log" "mentor.log"
我沒有聽說過glob2rx,太棒了! – rsmith54
使用管道...
library(tidyverse)
c("mama.log", "papa.log", "mimo.png", "mentor.log") %>%
.[grepl("^m.*\\.log$", .)]
[1] "mama.log" "mentor.log"
這不會增加任何東西;它只是kohske答案中提供的函數的替代語法。知道如何使用管道的人應該知道如何適應語法,而不知道使用管道的人會被這個答案困惑,因爲它沒有提供任何解釋。 – Gregor
但即使對管道做了簡單的解釋,如果有人問了一個問題:「我如何找到一個向量的平均值?」,並且有人回答「mean(x)」,「x%>%mean」不是不同的答案。 – Gregor
然後我們不需要dplyr管道...對不對? – user3357059
由於Andrey要求在.log中匹配strings * ending *的模式,我相信這應該是X [grepl(「^ m。* \\。log $」,X)] – jbaums
準確地說。我錯過了它。它應該以'$'結尾。 – kohske