我想将我的文本数据框转换为小写但我不想转换所有CAPS字母的单词。例如,如果有一个像
这样的字符串“我的朋友们不会在学校学习”
这个输出应该像
“我的朋友ENRIQUE在学习上表现不佳”
除了带全部大写字母的单词外,它将所有内容都转换为小写。 我需要一个r函数来完成这个任务。
答案 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"