我怎样才能让我的代码在 R 中更有效率——这是重复的

How can I make my code more efficient in R - It's to repetitive

我对我的代码效率有疑问。我的环境中有 9 个数据框,我需要为每个数据框执行相同的步骤。步骤和代码是(仅显示两个数据框):

CDL <- aggregate(A$Frequency, by=list(Category=A$Words), FUN=sum)
wordcloud(words = CDL$Category, freq = CDL$x, min.freq = 2,
      max.words=250, random.order=FALSE, rot.per=0.35, 
      colors=brewer.pal(6, "Dark2"))

Ltd <- aggregate(B$Frequency, by=list(Category=B$Words), FUN=sum)
wordcloud(words = Ltd$Category, freq = Ltd$x, min.freq = 2,
      max.words=250, random.order=FALSE, rot.per=0.35, 
      colors=brewer.pal(6, "Dark2"))

我首先聚合所有相同的词,对它们的频率求和,然后根据聚合结果创建一个世界云。

环境中的对象名称从 'A' 开始一直到 'I'。变量 'Frequency' 只是一个数字,变量 'Words' 包含单词列表。

对于词云: 变量 'Category' 包含取自 'Words' 变量的唯一词,'x' 是取自 'Frequency'

的频率总和

有什么方法可以在不重复我的代码的情况下执行相同的操作吗?谢谢

如果我没记错的话,定义一个函数并循环应该可以!

word_cloud <- function(df) {
  temp <- aggregate(df[,"Frequency"], by=list(Category=df[,"Words"]), FUN=sum)
  result <- wordcloud(words = temp[,"Category"], 
    freq = temp[,"x"],
    min.freq = 2,
    max.words=250,
    random.order=FALSE,
    rot.per=0.35,
    colors=brewer.pal(6, "Dark2"))
  return(result)
}

input_list <- list(A,B,C,D,E,F,G,H,I)

for (df_inp in input_list) {
  word_cloud(df_inp)
}

我不知道wordcloud()的输出模式,所以你可能想将结果保存到列表或绘图!希望对您有所帮助!