Подтвердить что ты не робот

Переадресовать список в R

В R неэффективно расширять структуру данных в цикле. Как распределить list определенного размера? matrix делает это проще с помощью аргументов ncol и nrow. Как это делается в списках? Например:

x <- list()
for (i in 1:10) {
    x[[i]] <- i
}

Я предполагаю, что это неэффективно. Что это лучший способ сделать это?

4b9b3361

Ответ 1

vector может создать пустой вектор желаемого режима и длины.

x <- vector(mode = "list", length = 10)

Ответ 2

Чтобы расширить то, что сказал @Jilber, lapply специально создан для этого типа операций.

вместо цикла for, вы можете использовать:

x <- lapply(1:10, function(i) i)

Вы можете расширить это на более сложные примеры. Часто то, что находится в теле цикла for, может быть непосредственно переведено на функцию, которая принимает одну строку, которая выглядит как строка из каждой итерации цикла.

Ответ 3

Что-то вроде этого:

   x <- vector('list', 10)

Но использование lapply - лучший выбор