如何将字符向量作为元数据/docvars添加到dfm以用于stm prevalence分析
给dfm添加包含完整表达式集合的元数据列(用于STM分析)
要让dfm的每一行都保留完整的62个表达式的EU_CFSP_INT_all向量作为元数据,你需要把每个元数据条目设为包含整个向量的列表元素,而不是拆分循环单个表达式。
正确代码实现
# 生成与文档数匹配的列表,每个元素都是完整的EU_CFSP_INT_all向量 metadata_col <- rep(list(EU_CFSP_INT_all), nrow(dfmat_PRs_trim_c)) # 用docvars()给dfm添加元数据列(这是quanteda操作dfm元数据的标准方式) docvars(dfmat_PRs_trim_c, "EUint") <- metadata_col
为什么之前的方法不行
- 你第一次用
rep_len()的方式,是把EU_CFSP_INT_all里的单个表达式循环填充到201行,所以每行只能得到一个表达式,而非完整集合。 - 转tokens再合并的方法绕了弯路,而且dfm的元数据不需要转成tokens格式,直接用列表存储向量即可。
后续STM分析的使用
添加完成后,在调用stm()函数时,prevalence参数可以直接指定这个元数据列:
library(stm) stm_model <- stm(dfmat_PRs_trim_c, prevalence = ~ EUint, ...)
内容的提问来源于stack exchange,提问作者H_W_13
相关产品推荐
相关产品推荐

