创建一个列表,其中相同功能的结果(数据框)应用于R中的输入列表

问题描述 投票:0回答:2

我正在使用stat_keyness函数文本,该函数查看特定文档组与所有其他文档组相比出现频率最高的单词(因此,基本上,您输入目标文档组,而输出是包含以下内容的数据集:单词从最重要到不重要以及其他带有统计信息的列排序。

我有一个字符向量,其中包含我想将凯恩斯分析应用于的文档组的所有名称:

interests_list <- c(unique(data$interest))

(看起来是:chr“ 0”,“ 340”,“ 456”等。基本上每个数字对应一组文档)

我可以轻松地将stat_keyness应用于单个文档,如下所示

keyness <- dfm(dfmat_data, groups = "group_interest")

#Calculate keyness and determine audience as target group,  compare frequencies of words 
between target and reference documents. 

result_keyness <- textstat_keyness(keyness, target = "17627")

问题是我不想为每个组分别运行stat_keyness,因为我有大约100个组。我当时正在考虑使用for循环,但是不确定[[如何创建由文本stat_keyness生成的所有数据框的列表到目前为止,我已经写了这篇文章,但我不知道如何存储我将获得的所有结果

for(i in interest_list) {textstat_keyness(keyness, target = i ) }
否则,我尝试使用apply但它不起作用

keylist <- lapply(keyness, textstat_keyness(keyness, target = interest_list ))

知道如何以任何有效的方式获取我的数据帧列表的想法吗?

非常感谢,

卡洛

r loops for-loop foreach
2个回答
0
投票
您是否尝试过初始化列表并分配textstat_keyness函数的结果?代码:

keylist <- list() for (i in 1:length(interest_list)) { keylist[[i]] <- textstat_keyness(keyness, target = interest_list[i]) }


0
投票
[由JaiPizGon提供的for循环的替代方案是lapply的解决方案。

keylist <- lapply(interest_list, function(i) textstat_keyness(keyness, target = i))

请注意,lapply本质上是一个for循环,该循环始终返回一个列表。 

JaiPizGon使用的表示法也是正确的,只有在R中增长对象时应小心-参见“ R Inferno”中的第2章。

因此,如果您更喜欢使用for循环,建议您在分配之前指定列表的大小,即:

keylist <- vector("list", length(interest_list)) for(i in seq_along(interest_list)) { keylist[[i]] <- textstat_keyness(keyness, target = interest_list[i]) }

© www.soinside.com 2019 - 2024. All rights reserved.