r - 用 R 计算字符串中的空格序列

标签 r regex performance

我想检索字符串中连续空格的序列。喜欢:

mystring="lalalal  lalalal lalala   lalalala "
retrieve_sequence_of_consecutive_blanks(mystring)
[1] 2 1 3 1

实际上,我有一个解决方案,用这个

sequence_of_blanks=function(vectors_of_strings){
  tokens=strsplit(x = mystring,split = "",fixed = TRUE)
  sequence=lapply(X = tokens,FUN = rle)
  resultats=lapply(sequence, function(item){
    resultats=item$lengths[which(item$values==" ")]
  })
}

我的问题是关于性能,您认为是否有更好的方法来做到这一点? 正则表达式解决方案怎么样? Python 解决方案怎么样?

最佳答案

您可以匹配所有空间 block 并获取它们的长度,例如

library(stringr)
nchar(unlist(str_extract_all(mystring, " +")))

或者基本 R 等价物:

nchar(unlist(regmatches(mystring, gregexpr(" +", mystring))))

两者产量

[1] 2 1 3 1

在Python中,你可以使用

[x.count(" ") for x in re.findall(" +", mystring)]

请参阅Python demo

如果您打算计算任何空格,请将文字空格替换为 \s。根据您的进一步要求进行调整。

关于r - 用 R 计算字符串中的空格序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49489414/

相关文章:

c++ - 快速计算一个 vector 与多个 vector 的余弦相似度

r - 在二分网络图中使用不同的字体作为顶点标签(Rstudio)

javascript - 正则表达式相当于 str.substr(0, str.indexOf ('foo' ))

Java - 接口(interface)/基类引用 - 性能

安卓动画变慢

matlab - 是否有类似 "ismember"但效率更高的功能?

java - 将 R 函数作为 Java 方法参数传递

R - 将下载的数据帧转换为 xts

html - 什么定义了所有非相关链接?

regex - 通过 XSD 1.0 描述具有不同出现范围的未排序元素组