R语言如何解决循环统计PDF作者次数赋值表格列返回NULL问题
问题原因
R中的for循环不会返回计算结果,直接将for循环赋值给author$count列,最终只能得到NULL值。
修复方案
两种常用的修复方式均可实现需求:
- 方案1:调整原有for循环逻辑
不要直接赋值整个for循环,改为在循环内部逐行赋值:
# 提前加载依赖包 library(stringr) author$count <- 0 for (i in seq_along(author$name)) { current_name <- author$name[i] author$count[i] <- sum(str_count(pdf, current_name)) }
- 方案2:使用向量化函数计算(更符合R的代码风格,代码更简洁)
不需要提前初始化count列,直接用sapply遍历计算即可:
library(stringr) author$count <- sapply(author$name, function(x) sum(str_count(pdf, x)))
注意事项
- 如果存在大小写不匹配导致漏统计的情况,可以将匹配内容统一转换为小写/大写再统计,示例:
sum(str_count(tolower(pdf), tolower(x))) - 若作者姓名存在特殊正则字符(比如
.、*等),可以加fixed()包裹匹配文本,避免正则解析错误:sum(str_count(pdf, fixed(x)))
内容的提问来源于stack exchange,提问作者Emma
相关产品推荐
相关产品推荐

