テキストのデータフレームを小文字に変換したいが、すべてのCAPS文字を含む単語を変換したくない。例えばすべての文字を大文字から小文字に変換するR
のような文字列は、「私の友人ENRIQUEが研究に良くない」している場合
これの出力は
「私の友人ENRIQUEが研究に良くない」
ようにする必要がありますすべて大文字の単語を除いて、すべてを小文字に変換しました。 この作業を行うにはr関数が必要です。
テキストのデータフレームを小文字に変換したいが、すべてのCAPS文字を含む単語を変換したくない。例えばすべての文字を大文字から小文字に変換するR
のような文字列は、「私の友人ENRIQUEが研究に良くない」している場合
これの出力は
「私の友人ENRIQUEが研究に良くない」
ようにする必要がありますすべて大文字の単語を除いて、すべてを小文字に変換しました。 この作業を行うにはr関数が必要です。
gsub
と(perl互換の)正規表現でこれを行うことができます。
gsub("(\\b\\w*[a-z]\\w*\\b)", "\\L\\1", String, perl=TRUE)
"my friend ENRIQUE is not good in studies"
\\b
ワード境界を置くと、これは別個の単語で動作することが保証されます。 [a-z]
は、少なくとも1つの小文字を含む単語を選択します。 [a-z]
の前後の\\w*
は、「ワード文字」すなわち文字または数字の任意の数(ゼロを含む)に一致します。置換パターンの\\L
は小文字に変換されます。
文字列を別々の単語に分割して、小文字のアルファベットの[a-z]
を含む単語を見つけ、その単語を小文字に変換することができます。私たちは、空のcollapse
引数でpaste0
使用できる1つの文字列としてそれを作るために
word_vec <- strsplit(x, " ")[[1]]
ifelse(grepl('[a-z]', word_vec), tolower(word_vec), word_vec)
#[1] "my" "friend" "ENRIQUE" "is" "not" "good" "in" "studies"
。
paste0(ifelse(grepl('[a-z]', word_vec), tolower(word_vec), word_vec), collapse = " ")
#[1] "my friend ENRIQUE is not good in studies"
答えをありがとう。この機能をコーパスに適用してフィルタリングしたいと考えています。このために "tm"パッケージに直接関数がある場合。私にお知らせください。 – umair
ありがとうございました。ここで\\ wの使用は何ですか? – umair
答えに少し追加しました。 – G5W
gsubで偉大な答え – akrun