Ищет предсказатели, чье имя начинается с некоторой подстроки, не может найти никакой подобной функции.У R есть функция startswith или endswith как python?
ответ
Я не знаю точно, когда он был добавлен в base
(по крайней мере 3.3.0), но startsWith
(и endsWith
) являются именно это.
> startsWith("what", "wha")
[1] TRUE
> startsWith("what", "ha")
[1] FALSE
https://stat.ethz.ch/R-manual/R-devel/library/base/html/startsWith.html
Спасибо, ijoseph, пожалуйста, см. Комментарий alexis_laz в соответствии с принятым ответом. – Chen
@Chen - Я думаю, что он по-прежнему принадлежит как ответ, так как это то, что вы изначально искали. Комментарии не заданы в камне. –
@Chen ах, я полностью пропустил этот комментарий раньше. – ijoseph
Не встроенный подобным образом.
Варианты включают grepl
и 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'
(только примечание) От R 3.3.0, функции ' startsWith' и 'endsWith' существуют. –
Это относительно просто с помощью функции подстроки:
> 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
Вы сократите каждую строку до нужной длины с подстроки. Длина - это количество символов, которое вы ищете в начале каждой строки.
Заимствование код из dplyr
пакета [see this] вы могли бы сделать что-то вроде этого:
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
}
select
Заявление dplyr Пакет поддерживает starts_with
и ends_with
. Например, это выбирает столбцы кадра данных радужной оболочки, которые начинаются с Petal
library(dplyr)
select(iris, starts_with("Petal"))
select
поддерживают другие подкоманды тоже. Попробуйте ?select
.
это ответ логический –
Самый простой способ, которым я могу думать о том, чтобы использовать %like%
оператор:
library(data.table)
"foo" %like% "^f"
оценивает, как TRUE
- Начиная с е
"foo" %like% "o$"
вычисляется как TRUE
- Ending с о
"bar" %like% "a"
вычисляется как TRUE
- Содержащие
Вы можете использовать регулярное выражение, как 'радужки [grepl ("^ Лепесток", имена (ирис))]' – thelatemail