Szukałem predyktorów, których nazwa zaczyna się od jakiegoś podłańcucha, nie może znaleźć podobnej funkcji.Czy R ma funkcję uruchamiającą się lub kończącą jak python?
Odpowiedz
Nie jestem pewien, kiedy dokładnie został dodany do base
(przynajmniej 3.3.0), ale startsWith
(i endsWith
) są dokładnie tego.
> startsWith("what", "wha")
[1] TRUE
> startsWith("what", "ha")
[1] FALSE
https://stat.ethz.ch/R-manual/R-devel/library/base/html/startsWith.html
Nie wbudowane w ten sposób. Dostępne są następujące opcje: grepl
i substr
.
x <- 'ABCDE'
grepl('^AB', x) # starts with AB?
grepl('DE$', x) # ends with DE?
substr(x, 1, 2) == 'AB'
substr('ABCDE', nchar(x)-1, nchar(x)) == 'DE'
(tylko uwaga) Od R 3.3.0, funkcje ' startsWith' i 'endsWith' istnieją. –
Jest to stosunkowo proste przy użyciu funkcji podciąg:
> strings = c("abc", "bcd", "def", "ghi", "xyzzd", "a")
> str_to_find = "de"
> substring(strings, 1, nchar(str_to_find)) == str_to_find
[1] FALSE FALSE TRUE FALSE FALSE FALSE
wyciąć każdy łańcuch do odpowiedniej długości z podciągu. Długość to liczba znaków, których szukasz na początku każdego ciągu.
Pożyczanie trochę kodu z opakowania dplyr
[see this] mógłby zrobić coś takiego:
starts_with <- function(vars, match, ignore.case = TRUE) {
if (ignore.case) match <- tolower(match)
n <- nchar(match)
if (ignore.case) vars <- tolower(vars)
substr(vars, 1, n) == match
}
ends_with <- function(vars, match, ignore.case = TRUE) {
if (ignore.case) match <- tolower(match)
n <- nchar(match)
if (ignore.case) vars <- tolower(vars)
length <- nchar(vars)
substr(vars, pmax(1, length - n + 1), length) == match
}
na dplyr pakiet za select
oświadczenie obsługuje starts_with
i ends_with
. Na przykład, ten wybiera kolumny ramki danych tęczówki, które zaczynają się Petal
library(dplyr)
select(iris, starts_with("Petal"))
select
wspiera innych podpoleceń też. Wypróbuj ?select
.
to zwrot logiczny –
Najprościej można myśleć jest użycie operatora %like%
:
library(data.table)
"foo" %like% "^f"
daje wartość TRUE
- od F
"foo" %like% "o$"
ocenia jako TRUE
- kończąc O
"bar" %like% "a"
ocenia jako TRUE
- Zawierające
Można użyć wyrażenia regularnego, jak 'tęczówki [Grepl ("^ Płatek", nazwach (Iris))]' – thelatemail