如何在 for 循环中正确生成和调用数据帧
How to properly generate and call dataframes in a for loop
我正在尝试使用 for 循环生成一些新的数据帧,这些数据帧是特定数据帧的子集,然后使用以下代码修改它们:
for(i in 2011:2017) {
name <- paste("DF", i, sep = ".")
assign(name, DF[DF$t==i,])
DF2.[[i]] <- DF.[[i]] %>% group_by(Mes) %>% complete(Comuna = cms) %>% fill(t, .direction = "up")
}
据我所知:
for(i in 2011:2017) {
name <- paste("DF", i, sep = ".")
assign(name, DF[DF$t==i,])
}
在生成 2011 年至 2017 年的数据帧时工作。
我也知道密码:
DF2.(year) <- DF.(year) %>% group_by(Mes) %>% complete(Comuna = cms) %>% fill(t, .direction = "up")
可以生成我需要的行。 “(年)”不是代码的一部分,只是为了解释它用于生成的数据帧。
我尝试了很多方法来调用生成的数据帧 [i],[[i]],使用分配代码,但我总是得到同样的错误:
Error in group_by(., Mes) : object 'DF.' not found
所以我正在寻找一种解决方法,它允许我使用第四行代码或在此上下文中的 for 循环上调用数据帧的正确方法或文档以完全理解循环语法。
我在R(或代码)相关网站上发现了很多类似的问题或循环示例,但我仍然无法理解循环的语法。
谢谢,
正如 Martin Gal 所说,列表是更好的方法:
library(dplyr)
# Empty list to hold results
ll <- list()
for(i in 2011:2017) {
ll[[paste0("DF.", i)]] <- DF %>%
filter(t == i) %>%
group_by(Mes) %>%
complete(Comuna = cms) %>%
fill(t, .direction = "up")
}
在这种情况下,每个列表元素都是一个数据框。您可以按名称访问这些数据框,例如ll[["DF.2011"]]
我正在尝试使用 for 循环生成一些新的数据帧,这些数据帧是特定数据帧的子集,然后使用以下代码修改它们:
for(i in 2011:2017) {
name <- paste("DF", i, sep = ".")
assign(name, DF[DF$t==i,])
DF2.[[i]] <- DF.[[i]] %>% group_by(Mes) %>% complete(Comuna = cms) %>% fill(t, .direction = "up")
}
据我所知:
for(i in 2011:2017) {
name <- paste("DF", i, sep = ".")
assign(name, DF[DF$t==i,])
}
在生成 2011 年至 2017 年的数据帧时工作。
我也知道密码:
DF2.(year) <- DF.(year) %>% group_by(Mes) %>% complete(Comuna = cms) %>% fill(t, .direction = "up")
可以生成我需要的行。 “(年)”不是代码的一部分,只是为了解释它用于生成的数据帧。
我尝试了很多方法来调用生成的数据帧 [i],[[i]],使用分配代码,但我总是得到同样的错误:
Error in group_by(., Mes) : object 'DF.' not found
所以我正在寻找一种解决方法,它允许我使用第四行代码或在此上下文中的 for 循环上调用数据帧的正确方法或文档以完全理解循环语法。
我在R(或代码)相关网站上发现了很多类似的问题或循环示例,但我仍然无法理解循环的语法。
谢谢,
正如 Martin Gal 所说,列表是更好的方法:
library(dplyr)
# Empty list to hold results
ll <- list()
for(i in 2011:2017) {
ll[[paste0("DF.", i)]] <- DF %>%
filter(t == i) %>%
group_by(Mes) %>%
complete(Comuna = cms) %>%
fill(t, .direction = "up")
}
在这种情况下,每个列表元素都是一个数据框。您可以按名称访问这些数据框,例如ll[["DF.2011"]]