r - for循环没有遍历每一行
问题描述
我有一个包含多个 MS Word 文件的文本语料库,我想对其进行分析。由于语料库很大(约 10,000 行)并且 nlp(使用cleanNLP
包)分析需要很长时间并且经常崩溃,我想我可以逐行遍历文本并分别分析每一个。
我编写了以下循环,旨在获取初始文本的每一行,提取任何位置实体并将详细信息存储在矩阵的下一个空行中text_mat
。
#read in text corpus
all <- read_dir("N:/data/All")
#convert into dataframe usable by text packages
all_df <- tibble(line = 1:nrow(all), text = all$content)
#loop through every line for location extraction
#create unpopulated matrix
text_mat <- matrix(NA, nrow = nrow(all_df), ncol = 3)
#loop through each line, fill matrix with location output
for (i in nrow(all_df)) {
line <- all_df[i, ]
obj_line <- cnlp_annotate(line, as_strings = TRUE)
loc <- cnlp_get_entity(obj_line) %>%
filter(entity_type == "CITY" | entity_type == "LOCATION") %>%
group_by(entity) %>%
tally() %>%
arrange(desc(n)) %>%
rename("Count" = "n")
text_mat[i, ] <- c(i, loc$entity, loc$Count)
next
}
#convert matrix to data frame
entity_df <- as.data.frame(text_mat)
当我运行循环时,它会很快完成 - 我预计这至少需要几分钟,并且text_mat
矩阵仍然是空的。这让我觉得循环只是分析第一行文本然后完成,但我不知道为什么。任何关于为什么会这样的帮助将不胜感激。
解决方案
循环启动应该是for (i in 1:nrow(all_df))
,不是for (i in nrow(all_df))
。
然后,您将为所有行运行它,而不仅仅是最后一行。
推荐阅读
- apache-httpcomponents - 如何在 httpcore5 中配置块传输编码
- excel - 不同的消息框取决于查询结果
- oracle - 我该如何解决这个问题?(顶点甲骨文)
- python - 与 Ray 库的多进程速度比较
- android - 如何从 ubuntu 的终端启动模拟器?
- javascript - 无法从 json-server 获取嵌套的对象数组
- curl - 如何使用 curl 命令或邮递员在 slack 中创建传入的 webhook
- javascript - 如何调用客户端-服务器端渲染和静态生成渲染
- amazon-web-services - 使用 AWS CLI 命令行 Cognito 未经确认的用户账户
- c# - 卸载 WPF ClickOnce 应用程序时删除额外文件