Я проектирую симуляцию, которая итеративно запускает блок кода, используя входные данные из двух отдельных фреймов данных (df
и year
).Полученный фрейм данных представляет собой измененную версию df
, которая затем сохраняется на моем жестком диске под двумя отдельными именами файлов: одно постоянно хранится для последующего анализа, а другое - для следующей итерации.
Вот моя проблема: фрейм данных year
должен представлять собой абсолютно новый фрейм данных для каждой итерации (т. Е. Данные следующего года).
Может ли это быть выполнено с помощью чего-то вроде цикла for, где индекс [i]
- это фрейм данных следующего года (а не строка в фрейме данных, как я понимаю для работы циклов)?Я подозреваю, что ответ включает в себя список?Вот некоторые фиктивные данные, пытающиеся продемонстрировать проблему:
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
для каждой итерации (например, я бы переназначил year
, используя year1991
для второй итерации в этом примере), но я уверен, что есть лучший способ автоматизировать весь процесс.Спасибо!