Подтвердить что ты не робот

У R есть функция startswith или endswith как python?

Вопрос очень понятен в названии.

4b9b3361

Ответ 2

Не встроенный.

Параметры включают 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'

Ответ 3

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

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

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

Ответ 4

Самый простой способ, которым я могу думать, - использовать оператор %like%:

library(data.table)

"foo" %like% "^f" 

оценивается как TRUE - Начиная с f

"foo" %like% "o$" 

оценивается как TRUE - Завершение с o

"bar" %like% "a"

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

Ответ 5

Это относительно просто, используя функцию подстроки:

> 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

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

Ответ 6

Заимствуя какой-то код из пакета 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
}