我試圖讓在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