首页 > 解决方案 > R循环从同样多的现有对象创建多个对象

问题描述

我已经尝试寻找这个问题的答案,但我遇到了麻烦,因为我不确定我什至在寻找正确的东西。基本上我想在 R 中创建一个循环来创建多个对象,每个对象都来自不同的对象。例如,假设我有 50 个现有对象(矩阵、数据框、图形等),它们的名称都相似(table1、table2...table50)。现在我想创建 50 个新对象,比如说 graph1...graph50。我遇到了循环问题,因为我不知道如何将名称作为字符串处理。我已经尝试过 assign 函数,但它在 assignment 参数中不够动态。我基本上想要这样的东西:

for (i in list(table names)){ graph "i" <- as.network(table "i") }

我还希望将对象分配为自身的某些功能,即图形“i”<-somefunction(graph“i”)等...

此外,如果有更有效的方法,我愿意接受。这似乎是一项简单的任务,但我无法弄清楚。现在,我实际上只是将 excel 中的语句连接起来并粘贴到 R 中,因此不会花费太长时间,但这很痛苦。谢谢你。

标签: rloopsobject

解决方案


我认为你可以有一个嵌套循环来做你正在寻找的事情;您可以对输入列表中的每个对象应用您想要的任何转换,并将结果存储在具有相同对象名称的新列表中。

in_list <- list(table1 = iris, 
                table2 = EuStockMarkets)
out_list <- list()

for(i in 1:length(in_list)){
  for(j in colnames(in_list[[i]])){
    out_list[[ gsub("table", "graph", names(in_list)[i]) ]][[j]] <- summary(in_list[[i]][,j])
  }
}

希望这可以帮助!


推荐阅读