You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何计算含指定特征的文档占比及quanteda dfm下标越界问题排查

错误原因

你遇到的Subscript out of bounds报错,是因为thetarget向量中存在部分特征没有出现在当前dfm的特征列表里,直接用特征名取dfm列子集时,找不到对应特征就会触发下标越界。增减目标词时有时成功有时失败,就是因为有时候你加的词刚好都在dfm特征里,有时候有缺失。

修复方案

先对目标特征做合法性校验,过滤掉不存在于dfm中的特征,再进行统计即可:

thetarget <- c("testing", "test", "example words", "example")
# 过滤出实际存在于dfm中的目标特征
valid_targets <- intersect(thetarget, featnames(dfm))

df <- data.frame(
  docname = docnames(dfm),
  Year = docvars(dfm, "Year"),
  # 没有合法目标特征时直接返回全FALSE,避免报错
  contains_target = if (length(valid_targets) == 0) rep(FALSE, nrow(dfm)) else rowSums(dfm[, valid_targets]) > 0,
  row.names = NULL
)

统计脚本优化

后续按年份统计的脚本可以简化,不需要把逻辑值转成字符再匹配,直接过滤逻辑值即可:

library(dplyr)

df2 <- df %>%
  filter(contains_target) %>%
  group_by(Year) %>%
  summarise(n = n())   

内容的提问来源于stack exchange,提问作者J.Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 19:09:03