web-dev-qa-db-ja.com

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文字列の処理を意図的に省略しています。

大文字のパターンは任意の正規表現パターン(または文字セット)に一般化できます。

上記の両方の解決策で問題は見られませんが、解決された問題に対して過度に複雑に見える点が異なります。

20
topchef

^および$パターンを使用して、文字列の最初と最後を一致させることができます

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

「toupper」関数を使用して大文字に変換したときに、Wordがそれ自体と同一であるかどうかをテストしてみませんか?

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

TRUEになります

10
Michael Kelly

tidyrユニバースに住みたい場合は、stringrを使用したバージョンを次に示します。

library(stringr)
str_detect(s, "^[:upper:]+$")
2
flies