如何在R中提取quanteda包fcm对象的50×50子矩阵?
解决quanteda中提取fcm目标子矩阵的问题
核心问题分析
你之前只筛选了列维度,所以得到全量行×目标列的矩阵;而fcm_select返回空矩阵,大概率是目标词汇与fcm特征名不匹配(比如大小写、词形差异),或者词汇本身不在fcm的特征列表中。
正确提取方法
方法1:直接行列索引筛选
先确保目标词汇存在于fcm的特征集合中,再同时筛选行和列:
# 定义你的50个目标词汇向量 target_words <- c("词1", "词2", ..., "词50") # 筛选出确实存在于fcm中的词汇(避免无效匹配) valid_words <- intersect(target_words, featnames(fcm)) # 提取行和列均为有效词汇的子矩阵 fcm_sub <- fcm[valid_words, valid_words]
方法2:正确使用fcm_select
如果要用fcm_select,需注意匹配规则,比如忽略大小写、确保词汇匹配:
fcm_sub <- fcm_select( fcm, pattern = target_words, selection = "keep", ignore_case = TRUE # 解决大小写不匹配问题 ) # 若仍有问题,可先检查目标词汇与fcm特征名的交集 print(intersect(target_words, featnames(fcm)))
验证步骤
提取完成后,用以下代码确认结果:
# 查看子矩阵维度 dim(fcm_sub) # 查看子矩阵的特征词汇 featnames(fcm_sub)
内容的提问来源于stack exchange,提问作者noetherlaw
相关产品推荐
相关产品推荐

