如何正确统计str_view与str_subset匹配数量及str_view返回固定值8的原因
固定返回值8的来源
str_view() 是stringr包提供的匹配结果可视化工具,它的返回值不是匹配到的字符串向量,而是htmlwidget类的可视化对象。这个对象本质是一个固定结构的列表,顶层默认包含8个元素,你直接对整个对象调用length()时,统计的是这个列表的顶层元素数量,和实际匹配到的字符串数量没有关联,因此无论是否有匹配结果,都会返回固定值8。
正确统计str_view匹配结果数量的方法
如果需要从str_view()的返回结果中提取匹配数,可以访问对象内部存储匹配内容的字段,示例代码如下:
# 存储str_view运行结果 view_result <- str_view(stringr::fruit, "y$", match = TRUE) # 提取匹配结果的总数量 length(view_result$x$html)
上述代码匹配y$时返回值为15,匹配无结果的k$时返回值为0,和实际匹配数量一致。
注意:
str_view的设计定位是可视化工具,若仅需要统计匹配数量,直接使用length(str_subset(匹配向量, 正则))或sum(str_detect(匹配向量, 正则))的效率更高,也更符合函数的设计用途。
内容的提问来源于stack exchange,提问作者manro
相关产品推荐
相关产品推荐

