如何用PrepText()遍历数据框值?解决textnets包参数报错
问题解决思路
错误原因
- 传入对象名字符串而非实际数据框:你给
PrepText传的df[row, "col1"]是字符串(比如"what is this"),但PrepText需要的是实际的dataframe对象,不是对象名文本。 - 参数名不匹配:你用的
groupvar、textvar等参数,和textnets包中PrepText的实际参数名不符,导致触发"unused arguments"报错。
修正步骤
1. 用get()获取实际数据框
通过get(df$col1[row])把字符串形式的对象名转换成对应的dataframe,这样才能让PrepText处理实际数据。
2. 匹配PrepText的正确参数
查?PrepText文档可知,它的核心参数是:
text:要处理的文本列(对应你的body)group:分组列(对应你的title)
其余tokenizer、pos等参数有效,但要使用函数定义的参数名,不能用自定义的textvar或groupvar。
3. 收集结果并堆叠
初始化空数据框存储每次计算结果,循环中逐步追加,最后合并成完整结果。
完整修正代码
# 加载textnets包 library(textnets) # 初始化空数据框用于存储所有结果 all_centrality <- data.frame() for (row in 1:nrow(df)) { # 获取当前行对应的实际数据框 current_df <- get(df$col1[row]) # 正确调用PrepText函数 prepped_header <- PrepText( text = current_df$body, group = current_df$title, node_type = "groups", tokenizer = "words", pos = "nouns", remove_stop_words = TRUE, compound_nouns = TRUE ) # 创建文本网络并计算中心性 header_text_network <- CreateTextnet(prepped_header) text_centrality <- TextCentrality(header_text_network) # 添加标识列,区分结果来自哪个原始对象 text_centrality$source_object <- df$col1[row] # 将当前结果追加到总数据框 all_centrality <- rbind(all_centrality, text_centrality) } # 查看最终堆叠后的结果 print(all_centrality)
额外注意事项
- 确保
how are you和hello im good这两个对象已经被正确定义为dataframe,否则get()会报错找不到对象。 - 不同版本的textnets参数可能有细微调整,运行前可以用
help(PrepText)确认最新参数说明。
内容的提问来源于stack exchange,提问作者hy9fesh
相关产品推荐
相关产品推荐

