R имеет функцию startswith или endswith как Python? [закрытый]

Вопрос очень ясен в заголовке.

62
задан 12 May 2019 в 08:53

6 ответов

Как добавленный к base в 3.3.0 , startsWithendsWith) точно это.

> startsWith("what", "wha")
[1] TRUE
> startsWith("what", "ha")
[1] FALSE

https://stat.ethz.ch/R-manual/R-devel/library/base/html/startsWith.html

85
ответ дан 31 October 2019 в 13:45

Самым простым путем я могу думать, должен использовать %like% оператор:

library(data.table)

"foo" %like% "^f" 

оценивает как TRUE - Запускающийся с , f

"foo" %like% "o$" 

оценивает как TRUE - Заканчивающийся , o

"bar" %like% "a"

оценивает как TRUE - Содержащий

6
ответ дан 31 October 2019 в 13:45

Не встроенный как этот.

Опции включают 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'
24
ответ дан 31 October 2019 в 13:45

dplyr пакет select поддержки оператора starts_with и ends_with. Например, это выбирает столбцы ирисового кадра данных, которые запускаются с Petal

library(dplyr)
select(iris, starts_with("Petal"))

select поддержки другие подкоманды также. Попробуйте ?select.

11
ответ дан 31 October 2019 в 13:45

Заимствование некоторого кода от dplyr пакет [видит это] , Вы могли сделать что-то вроде этого:

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
}
3
ответ дан 31 October 2019 в 13:45

Это относительно просто при помощи функции подстроки:

> 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

Вы сокращаете каждую строку к желаемой длине с подстрокой. Так как длина является количеством символов, Вы ищете в начале каждой строки.

3
ответ дан 31 October 2019 в 13:45

Другие вопросы по тегам:

Похожие вопросы: