如何使用R来计算字符串中的CAPSLOCK
在src$Review中,每行用俄语填写文本。我想数一数每一排的卡普斯洛克。例如,在“我的苹果是绿色的”中,我不仅要计算大写字母的数量,还要计算CAPSLOCK的数量(没有“我的”,只有“绿色”)。因此,只有当至少有两个字符以大写形式出现时,它才起作用 现在,我的脚本中有以下代码:如何使用R来计算字符串中的CAPSLOCK,r,uppercase,capslock,R,Uppercase,Capslock,在src$Review中,每行用俄语填写文本。我想数一数每一排的卡普斯洛克。例如,在“我的苹果是绿色的”中,我不仅要计算大写字母的数量,还要计算CAPSLOCK的数量(没有“我的”,只有“绿色”)。因此,只有当至少有两个字符以大写形式出现时,它才起作用 现在,我的脚本中有以下代码: capscount <- str_count(src$Review, "[А-Я]") capscont您要查找的模式是“\\b[A-Z]{2,}\\b”。它将在两个或多个连续的大写字母上匹配,每边都有边界,
capscount <- str_count(src$Review, "[А-Я]")
capscont您要查找的模式是“\\b[A-Z]{2,}\\b”
。它将在两个或多个连续的大写字母上匹配,每边都有边界,\\b
。这是整体结构,必要时用俄语字母表填写
#test string. A correct count should be 1 0 2
x <- c("My GREEN", "My Green", "MY GREEN")
library(stringr)
str_count(x, "\\b[A-Z]{2,}\\b")
#[1] 1 0 2
library(stringi)
stri_count(x, regex="\\b[A-Z]{2,}\\b")
#[1] 1 0 2
#base R
sapply(gregexpr("\\b[A-Z]{2,}\\b", x), function(x) length(c(x[x > 0])))
#[1] 1 0 2
将Pierre的正则表达式与nchar
和str\u extract\u all
一起使用。使用simplify=TRUE
和paste0
连接所有实例
library(stringr)
string <- c("My applie is GREEN and Her Majesty's apricot is ORANGE", "I have a LARGE sword", "My baby is sick")
nchar(
paste0(
str_extract_all(string = string, pattern = "\\b[A-Z]{2,}\\b", simplify = TRUE),
collapse = "")
)
库(stringr)
string我维护的qdapRegex包中有一个正则表达式,它与@Hugh的正则表达式相同,但在我看来,在一个库中存储大量的公共正则表达式是很好的,我可以直接获取这些正则表达式qdapRegex使用stringi作为后端,因此如果您安装了qdapRegex,应该可以使用
在@Pierre Lafortune的字符串上:
x <- c("My GREEN", "My Green", "MY GREEN")
library(qdapRegex)
stringi::stri_count_regex(x, grab("@rm_caps"))
## [1] 1 0 2
x2 <- c("My applie is GREEN and Her Majesty's apricot is ORANGE", "I have a LARGE sword", "My baby is sick")
stringi::stri_count_regex(x2, grab("@rm_caps"))
## [1] 2 1 0
在@Hugh的字符串上:
x <- c("My GREEN", "My Green", "MY GREEN")
library(qdapRegex)
stringi::stri_count_regex(x, grab("@rm_caps"))
## [1] 1 0 2
x2 <- c("My applie is GREEN and Her Majesty's apricot is ORANGE", "I have a LARGE sword", "My baby is sick")
stringi::stri_count_regex(x2, grab("@rm_caps"))
## [1] 2 1 0
x2