Я пытаюсь выделить память для списков, в которые позже записываю результаты. Вы можете сделать это, например,
mylist <- vector(mode = "list", length = 10)
Но я часто работаю с именованными элементами в списке и для циклов. Имена основаны на текущей итерации, поэтому они недоступны заранее.
Если я сделаю это сейчас
years <- c("2010", "2011", "2012", "2013", "2014")
results_list <- vector(mode = "list", length = length(years))
for (year in years) {
current_name <- paste("The year", year)
value <- as.numeric(year)
results_list[[current_name]] <- value
}
> results_list
[[1]]
NULL
[[2]]
NULL
[[3]]
NULL
[[4]]
NULL
[[5]]
NULL
$`The year 2010`
[1] 2010
$`The year 2011`
[1] 2011
$`The year 2012`
[1] 2012
$`The year 2013`
[1] 2013
$`The year 2014`
[1] 2014
, он не будет размещен ни в одном из выделенных мест, но новые будут добавлены в список. Я понимаю, что это не неожиданно, но мои вопросы: можно ли заменить заранее выделенные слоты по имени? Пожалуйста, помните, у меня нет имен элементов, доступных до l oop.
Возможно, сначала можно будет запустить l oop, чтобы просто сгенерировать имена и настроить структуру списка а затем заполните список на основе второго l oop, совпадающего с именованными элементами. Как вы думаете, это сэкономило бы память и скорость для больших списков?
Если это (легко) невозможно, я перепишу свой код для адресации слотов по индексу, независимо от имени, и изменю его впоследствии