Проверка правильности строки в регистре R

Есть ли более простой метод для соответствия шаблону регулярного выражения? Например, чтобы проверить, является ли заданная строка прописными, следующие 2 метода, но кажутся слишком сложными. Проверка stringr Я не обнаружил никаких признаков для более простого решения.

Метод 1:

isUpperMethod1 <- function(s) {
  return (all(grepl("[[:upper:]]", strsplit(s, "")[[1]])))
}

Метод 2:

isUpperMethod2 <- function(s) {
  m = regexpr("[[:upper:]]+", s)
  return (regmatches(s, m) == s)
}

Я намеренно пропускаю обработку пустых строк NA, NULL, чтобы избежать раздутого кода.

Шаблон в верхнем регистре может быть обобщен на произвольный шаблон регулярного выражения (или набор символов).

Я не вижу проблем с обоими решениями выше, кроме того, что они кажутся чрезмерно сложными для решения проблемы.

Ответ 1

Вы можете использовать шаблоны ^ и $ для соответствия началу и концу строки

grepl("^[[:upper:]]+$", s)

Ответ 2

Почему бы просто не проверить, совпадает ли слово с самим собой при преобразовании в верхний регистр с помощью функции "toupper"?

word1 <- "TEST"
word1 == toupper(word1) 

будет TRUE