#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
)