将所有字母从大写转换为小写在句子中,除了使用R的所有CAPS的单词

时间:2017-03-31 18:00:33

标签: r string split uppercase lowercase

我想将我的文本数据框转换为小写但我不想转换所有CAPS字母的单词。例如,如果有一个像

这样的字符串

“我的朋友们不会在学校学习”

这个输出应该像

“我的朋友ENRIQUE在学习上表现不佳”

除了带全部大写字母的单词外,它将所有内容都转换为小写。 我需要一个r函数来完成这个任务。

2 个答案:

答案 0 :(得分:4)

您可以使用dependencies { ... compile 'org.mongodb:mongodb-driver:3.4.2' ... } 和(perl兼容的)正则表达式执行此操作。

gsub

放置gsub("(\\b\\w*[a-z]\\w*\\b)", "\\L\\1", String, perl=TRUE) "my friend ENRIQUE is not good in studies" 字边界可确保对单独的单词进行操作。 \\b选择包含至少一个小写字母的单词。 [a-z]之前和之后的\\w*匹配任何数字(包括零)的"字符"即字母或数字。替换模式中的[a-z]转换为小写。

答案 1 :(得分:1)

我们可以将字符串拆分为不同的单词,然后找出包含任何小写字母[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"