Wurde nach Prädiktoren gesucht, deren Name mit einer Teilzeichenfolge beginnt, konnte keine ähnliche Funktion gefunden werden.Hat R Funktion startswith oder endet mit wie Python?
Antwort
Ich bin nicht sicher genau, wenn es um base
hinzugefügt wurde (zumindest von 3.3.0), aber startsWith
(und endsWith
) sind genau diese.
> startsWith("what", "wha")
[1] TRUE
> startsWith("what", "ha")
[1] FALSE
https://stat.ethz.ch/R-manual/R-devel/library/base/html/startsWith.html
Danke, Ijoseph, bitte siehe Alexis_laz Kommentar unter der angenommenen Antwort. – Chen
@Chen - Ich denke, es gehört immer noch als Antwort, da es das ist, wonach Sie ursprünglich gesucht haben. Kommentare sind nicht in Stein gemeißelt. –
@Chen ah, ich habe diesen Kommentar komplett verpasst. – ijoseph
Nicht so gebaut.
Zu den Optionen gehören grepl
und 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'
(nur eine Note) von R 3.3.0 Funktionen ' startsWith' und 'endsWith' existieren. –
Dies ist relativ einfach durch die Teilfunktion:
> 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
Sie jede Zeichenfolge geschnitten auf die gewünschte Länge mit Teilkette. Die Länge ist die Anzahl der Zeichen, die Sie am Anfang jeder Zeichenfolge suchen.
einige Code aus dem dplyr
Paket Borrowing [see this] Sie so etwas tun könnte:
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
}
Die select
Erklärung des dplyr Paket unterstützt starts_with
und ends_with
. Beispielsweise wählen diese die Spalten des Irisdatenrahmens, der zu mit Petal
library(dplyr)
select(iris, starts_with("Petal"))
select
unterstützt andere Subbefehle starten. Versuchen Sie ?select
.
es ist logisch logisch –
Die einfachste Art, wie ich denken kann, ist die %like%
Operator zu verwenden:
library(data.table)
"foo" %like% "^f"
wertet als TRUE
- Beginnend mit f
"foo" %like% "o$"
wertet als TRUE
- Ende mit o
"bar" %like% "a"
wertet als TRUE
- mit ein
Sie können einen regulären Ausdruck verwenden, wie 'Iris [Grepl ("^ Petal", Namen (Iris))]' – thelatemail