Возможный дубликат:
загрузить большой набор данных
Я хотел бы загрузить большой двусторонний набор данных, который содержит несколько переменных столбцов и строк. Я должен сохранить как переменные строки, так и столбца. В результате должен получиться список, содержащий начальную загрузку всех переменных столбца для каждой переменной строки. Я предоставляю необходимый код, чтобы ответить на мой вопрос, но я думаю, что это не элегантно. Я был бы признателен за лучший и более быстрый код. Ниже приведено упрощенное воссоздание двустороннего набора данных:
rm(list=ls())
data <- 1:72
Создайте двухстороннюю матрицу данных:
charDataDiff <- matrix(data, nrow=9,ncol=8)
varNames <- c("A", "B", "C","A", "B", "C","A", "B", "C")
Добавьте столбец символов в матрицу charDataDiff:
charDataDiff <- cbind(varNames ,data.frame(charDataDiff))
Добавьте имена столбцов:
colnames(charDataDiff) <- c("patchId","s380","s390","s400","s410","s420","s430","s440","s450")
Разделите данные, используя переменную строки "patchId" в качестве критерия. Это создает три списка: по одному для каждой переменной.
idColor <- c("A", "B", "C")
(patchSpectrum <- lapply(idColor, function(idColor) charDataDiff[charDataDiff$patchId==idColor,]))
Создал функцию sampleBoot для выборки patchSpectrum.
sampleBoot <- function(nbootstrap=2, patch=3){
return(lapply(1:nbootstrap, function(i)
{patchSpectrum[[patch]][sample(1:nrow(patchSpectrum[[patch]]),replace=TRUE),]}))}
Список «k» отвечает на мой вопрос. Однако я думаю, что мой код медленный для большого набора данных и большой начальной загрузки. Я загружаю только 10 итераций для трех переменных строк. Приветствуется более быстрый и элегантный код.
numBoots <- 10
for (i in 1: numBoots)
k <- lapply(1:3, function(n)
do.call(rbind, lapply(sampleBoot(i, n), function(x) apply(x[-1], 2, median))))
k
k
перезаписывается на каждой итерации, поэтому вы получаете толькоk
дляi == numBoots
. Это предназначено? - person flodel   schedule 28.10.2012