R中有没有办法将循环的每次迭代存储到一个单独的变量中?

Is there a way in R to store each iteration of a loop into a separate variable?

我正在尝试将一些描述性小标题存储到单独的变量中。更具体地说,我将数据汇总成小标题,这些小标题描绘了特定年份(1987-2016)的国家列表和每个国家的人口。每次迭代代表一年。我当前的重复循环(见下文)效果很好,但我希望能够将每次迭代存储到一个单独的变量中,这样我以后就可以将这些变量组合成一个描述性的视觉对象。

x = 1987
repeat {
  print(subset(data, year == x) %>%
    group_by(country) %>%
    summarize(sum(population)))
    x = x + 1
    if (x > 2016) {
    break
    }
  }

非常感谢!

您可以将结果存储在列表中:

x = 1987
l <-list()
repeat {
  l[[as.character(x)]]<-print(subset(data, year == x) %>%
    group_by(country) %>%
    summarize(sum(population)))
    x = x + 1
    if (x > 2016) {
    break
    }
  }
l

您可以像这样使用 assign() 执行此操作:

for (i in 1990:2000) {
  assign(paste0('year_', i, "_dat"), i)
}

不确定这是否是完成更大任务的最佳方式,但 assign() 会做你想做的。似乎 i 将是您的数据框,它可以正常工作。

assign() 在环境中创建一个变量并将名称和对象作为参数 - 非常适合您的情况。我们可以使用 paste0() 动态生成变量名,其中包含我们正在循环的内容,并给它任何对象以分配给该名称。