Я хотел бы создать новый элемент в именованном списке, который является результатом операций с другими элементами этого же списка.
Воспроизводимые данные:
# Build Params Matrix
LAL <- c(1:3)
LEL <- c(20191:20192)
LIL <- c(30,40)
LOL <- c(1:2)
params.matrix <- expand.grid(LAL, LEL, LIL, LOL)
colnames(params.matrix) <- c("LAL", "LEL", "LIL", "LOL")
PARAMS.COMBOS = list()
for (ii in 1:nrow(params.matrix)) {
TMP.ROW <- params.matrix[ii,]
PARAMS.COMBOS[[ii]] <- list(
"LAL" = TMP.ROW$LAL,
"LEL" = TMP.ROW$LEL,
"LIL" = TMP.ROW$LIL,
"LOL" = TMP.ROW$LOL
)
}
for (ii in 1:length(PARAMS.COMBOS)){
# .. do something else ##
PARAMS[["LUL"]] <- PARAMS[["LAL"]] * PARAMS[["LIL"]]
}
PARAMS[['LUL']]
не хранится в каждом подсписке в PARAMS.COMBOS
. Он создается «на лету», но не сохраняется.
Решением было бы создать новый список следующим образом:
new.PARAMS.COMBOS <- list()
for (ii in 1:length(PARAMS.COMBOS)){
## .. do something else ##
PARAMS[["LUL"]] <- PARAMS[["LAL"]] * PARAMS[["LIL"]]
new.PARAMS.COMBOS[[ii]] <- PARAMS
}
Можно ли обновить PARAMS.COMBOS
, чтобы мне не нужно было создавать другой список? Я думаю, что единственный путь - это обновить «вручную» исходный список (аналогично созданию нового списка), например:
for (ii in 1:length(PARAMS.COMBOS)){
PARAMS <- PARAMS.COMBOS[[ii]]
## .. do something else ##
PARAMS[["LUL"]] <- PARAMS[["LAL"]] * PARAMS[["LIL"]]
## .. do something else ##
PARAMS.COMBOS[[ii]] <- PARAMS
}
Это будет лучшим способом? Есть ли хорошие практики для этого случая?
Спасибо!