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()
动态生成变量名,其中包含我们正在循环的内容,并给它任何对象以分配给该名称。
我正在尝试将一些描述性小标题存储到单独的变量中。更具体地说,我将数据汇总成小标题,这些小标题描绘了特定年份(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()
动态生成变量名,其中包含我们正在循环的内容,并给它任何对象以分配给该名称。