Создание списка пустых списков из символьного вектора, есть ли лучший способ?

#r

#r

Вопрос:

Я написал цикл для создания списка пустых списков из символьного вектора. Выходной список содержит один пустой список для каждого элемента в символьном векторе с этой символьной строкой в качестве имени. Это воспроизводимый пример того, что я написал:

 charVect <- rownames(mtcars)

listOfLists <- list()

for ( i in seq_along(charVect)){
  charVect[i]
  listOfLists[[charVect[i]]] <- list()

}
 

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

Это лучший способ? Есть ли какие-либо функции или методы, которые я мог бы использовать вместо этого, чтобы сократить строки кода здесь?

Ответ №1:

Попробуйте

 setNames(lapply(vector("list", nrow(mtcars)), function(x) list()), rownames(mtcars))
 

Комментарии:

1. Это не дает мне тот же результат, что и в моем примере. Он создает список символьных векторов вместо списка именованных пустых списков.

2. Я вижу, что элементы списка не имеют класса, и когда я добавляю элемент, они становятся списком.

3. test <- setNames(вектор(«список», nrow(mtcars)), имена строк(mtcars)) class(test$ Mazda RX4 ) test1 <- «testtest» test$ Mazda RX4 $test <- test1 class(test$ Mazda RX4 )