【发布时间】:2019-02-25 03:13:20
【问题描述】:
我正在设计一个模拟,它使用来自两个单独数据帧(df 和year)的输入迭代地运行一段代码。生成的数据框是 df 的修改版本,然后以两个单独的文件名保存在我的硬盘驱动器上:一个永久存储以供将来分析,另一个为下一次迭代调用。
这是我的问题:数据框year 必须是每次迭代的全新数据框(即下一年的数据)。
这是否可以通过类似于 for 循环的方式来完成,其中索引 [i] 是下一年的数据框(而不是数据框中的一行,这就是我理解的 for 循环的操作方式)?我怀疑答案涉及列表?以下是一些试图证明该问题的虚拟数据:
df <- tibble(
x = 1:25,
y = rnorm(25, 22, 8))
year1990 <- tibble(
Year = 1990,
DayOfYear = 1:6,
temp = seq(0, 20, 4))
year1991 <- tibble(
Year = 1991,
DayOfYear = 1:6,
temp = seq(0, 25, 5))
year1992 <- tibble(
Year = 1992,
DayOfYear = 1:6,
temp = seq(0, 15, 3))
#### Beginning of Code to Be Repeated ####
year <- year1990 # Start with this year, BUT each subsequent iteration needs the following year's data
df$survive <- ifelse(max(year$temp) <= df$y, "Dead", "Live")
write.csv(df, "location/f.csv",row.names=FALSE) # Write temporary CSV to be recalled
write.csv(df, paste(year[1,1], ".csv", sep = ""), row.names = FALSE) # Write permanent CSV for storage
#### End of Code to Be Repeated ####
# Reload the newly modified data frame
setwd()
df <- read.csv("df.csv")
目前,我手动重新加载 df 并为每次迭代重置 year(例如,在此示例中,我将使用 year1991 重新分配 year 用于第二次迭代),但我确信有更好的使整个过程自动化的方法。谢谢!
【问题讨论】:
-
您在哪里为每次迭代重置年份?我很困惑,因为 df 中没有 year。
-
@Parfait,感谢您的提问。 “Beginning...”之后的行,我使用明年的数据分配对象名称
year。这有意义吗?
标签: r loops recursion iteration simulation