我想将我的数据框文本转换为小写字母,但我不想将所有大写字母转换为单词。例如,如果有一个像将句子中所有字母从大写字母转换为小写字母,除了所有大写字母都使用R
一个字符串“我的朋友恩里克没有经过研究好”
这样做的输出应该像
“我的朋友恩里克是不是在研究好”
它将所有内容都转换为小写,除了所有大写字母。 我需要一个r函数来完成这个任务。
我想将我的数据框文本转换为小写字母,但我不想将所有大写字母转换为单词。例如,如果有一个像将句子中所有字母从大写字母转换为小写字母,除了所有大写字母都使用R
一个字符串“我的朋友恩里克没有经过研究好”
这样做的输出应该像
“我的朋友恩里克是不是在研究好”
它将所有内容都转换为小写,除了所有大写字母。 我需要一个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]
选取包含至少一个小写字母的单词。 [a-z]
前后的\\w*
与任何数字(包括零)的“单词字符”即字母或数字相匹配。替代模式中的\\L
转换为小写。
我们可以将字符串拆分成不同的单词,然后找出那些包含任何小写字母[a-z]
的单词并将该单词转换为小写。
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
用空collapse
论点一个字符串。
paste0(ifelse(grepl('[a-z]', word_vec), tolower(word_vec), word_vec), collapse = " ")
#[1] "my friend ENRIQUE is not good in studies"
感谢您的回答。我想将这个函数应用于语料库进行过滤。如果在这个“tm”包中有任何直接的功能。请告诉我。 – umair
谢谢。这里有什么用途? – umair
添加了一点答案。 – G5W
用gsub很好的回答 – akrun