这就是我所知道的,即我打算在该字符串中获取换行次数:
> res <- grep("\n","why \n is this not \n easier?")
> str(res)
int 1
> res
[1] 1
>
我想要做的是获得实际的2而不是1.是否有另一种方式,最好不使用第三方包(需要检查我的依赖性足迹)。
更新:使用MrFlick解决方案作为灵感,我最终做了:
countOccurrences <- function(pattern, x) {
return(ifelse(grepl(pattern, x), sapply(gregexpr(pattern, x), length), 0))
}
> countOccurrences("\n", "why \n is this not \n easier?")
[1] 2
> countOccurrences("\n", "why is this not easier?")
[1] 0
> countOccurrences("\n", "why \n is \n this \n not \n easier? \n")
[1] 5
>
答案 0 :(得分:3)
你可以做到
test <- c("why \n is this not \n easier?", "none","just\none","\n\n")
res <- gregexpr("\n",test)
sapply(res, function(x) sum(x>=0))
# [1] 2 0 1 2
我们在这里使用gregexpr
,因为grep
只会匹配第一次出现。另外我们申请我们应用一个函数来计算匹配位置的数量(忽略-1,不匹配)
答案 1 :(得分:3)
我知道你提到你不想使用包,但包stringi
非常有效。
library(stringi)
stri_count("why \n is this not \n easier?", fixed = "\n")
# [1] 2
如果字符串不包含匹配项,stri_count
将返回零
stri_count("why is this not easier?", fixed = "\n")
# [1] 0