У меня есть список длины 30000 и каждый элемент списка содержит один вектор длины 6.Извлечение элементов из вектора в списках
примера (с длиной всего 2):
trainLists <- list(c(1,2,3,4,5,6),c(7,8,9,10,11,12))
I хотите «сгладить» эти списки в фреймворк данных и создать 6 факторов (один соответствует каждому из элементов в векторах в списке).
Таким образом, результат будет:
можно выполнить это с помощью цикла, такие как
for (i in 1:length(trainLists){
factor1 [i] <- trainLists[[i]][1]
factor2 [i] <- trainLists[[i]][2]
factor3 [i] <- trainLists[[i]][3]
factor4 [i] <- trainLists[[i]][4]
factor5 [i] <- trainLists[[i]][5]
factor6 [i] <- trainLists[[i]][6]
}
но это ужасно медленно. Как лучше всего это сделать?
См. '? Rbind' и'? Cbind'. Подсказка: начните с тестирования 'do.call (rbind, trainLists)' на ваших небольших данных, чтобы посмотреть, что он делает. – Arun
О, это круто! Благодаря! –
Чтобы принудить к факторам, вы можете использовать 'sapply/lapply', но для этого, скорее всего, потребуется другой вызов' as.data.frame'. Другим вариантом будет нечто вроде 'colwise (as.factor) (yourData)' из пакета ** plyr **. – joran