无法在str_count()函数中使用循环统计含问号文本占比
解决统计含问号文本占比的问题
原代码的问题
你写的循环只是调用str_count()计算了每个文本里的问号数量,但既没打印结果也没把结果存到变量里,所以运行后看不到任何输出。而且你的需求是统计包含问号的文本数量占比,不需要统计单文本内的问号个数,用str_count()属于做了多余计算。
高效解决方案(推荐)
R是向量化语言,完全不需要写循环,用stringr包的str_detect()就能快速实现需求:
# 先加载stringr包 library(stringr) # 判断每条文本是否包含问号,得到逻辑向量(TRUE=包含,FALSE=不包含) has_question_mark <- str_detect(data_frame$text, pattern = "\\?") # 计算占比:逻辑向量的平均值就是占比(TRUE被视为1,FALSE视为0) proportion <- mean(has_question_mark) # 输出结果 print(proportion)
若要修改原循环(不推荐)
如果非要让你的循环有输出,可以改成下面这样,但这种方法效率远低于向量化操作:
library(stringr) # 初始化空向量存储结果 counts <- c() for (i in 1:nrow(data_frame)) { # 计算当前文本的问号数量并存入向量 cnt <- str_count(data_frame$text[i], pattern = "\\?") counts <- c(counts, cnt) } # 统计含问号的文本占比 proportion <- mean(counts > 0) print(proportion)
内容的提问来源于stack exchange,提问作者Alex Il
相关产品推荐
相关产品推荐

