Ответ 1
vector
может создать пустой вектор желаемого режима и длины.
x <- vector(mode = "list", length = 10)
В R неэффективно расширять структуру данных в цикле. Как распределить list
определенного размера? matrix
делает это проще с помощью аргументов ncol
и nrow
. Как это делается в списках? Например:
x <- list()
for (i in 1:10) {
x[[i]] <- i
}
Я предполагаю, что это неэффективно. Что это лучший способ сделать это?
vector
может создать пустой вектор желаемого режима и длины.
x <- vector(mode = "list", length = 10)
Чтобы расширить то, что сказал @Jilber, lapply
специально создан для этого типа операций.
вместо цикла for, вы можете использовать:
x <- lapply(1:10, function(i) i)
Вы можете расширить это на более сложные примеры. Часто то, что находится в теле цикла for, может быть непосредственно переведено на функцию, которая принимает одну строку, которая выглядит как строка из каждой итерации цикла.
Что-то вроде этого:
x <- vector('list', 10)
Но использование lapply - лучший выбор