我试图让在R.字符串开括号的数量我用str_count
功能从stringr
包计算一个字符串的“(”出现的次数
s<- "(hi),(bye),(hi)"
str_count(s,"(")
错误stri_count_regex(字符串,图案,opts_regex =属性(模式, :'在正则表达式模式不正确嵌套的括号 (U_REGEX_MISMATCHED_PAREN)
我希望能拿到3这个例子
我试图让在R.字符串开括号的数量我用str_count
功能从stringr
包计算一个字符串的“(”出现的次数
s<- "(hi),(bye),(hi)"
str_count(s,"(")
错误stri_count_regex(字符串,图案,opts_regex =属性(模式, :'在正则表达式模式不正确嵌套的括号 (U_REGEX_MISMATCHED_PAREN)
我希望能拿到3这个例子
(
是一个特殊字符。你需要逃避它:
> str_count(s,"\\(")
[1] 3
或者,因为你使用stringr
,您可以使用coll
功能:
str_count(s,coll("("))
[1] 3
如果你想这样做的基础R那么可以拆分为单个字符的矢量和直接计数"("
(不代表它作为一个正则表达式):
> s<- "(hi),(bye),(hi)"
> chars <- unlist(strsplit(s,""))
> length(chars[chars == "("])
[1] 3
或者这个'nchar(s) - nchar(gsub('\\(','',s))'为基础R – Sotos
@Sotos也可以。 –
您也可以使用在基础R连同length
:
sum(gregexpr("(", s, fixed=TRUE)[[1]] > 0)
[1] 3
gregexpr
取入一个字符向量,并返回一个列表与每个匹配的起始位置。为了匹配文字,我添加了fixed = TRUE。 length
将不起作用,因为gregexpr
未找到子表达式时返回-1。
如果您有长度大于一的特征向量,则需要将结果输送给sapply
:
# new example
s<- c("(hi),(bye),(hi)", "this (that) other", "what")
sapply((gregexpr("(", s, fixed=TRUE)), function(i) sum(i > 0))
[1] 3 1 0
逃生吧'str_count(S, “\\(”)' – Sotos