У меня было около 200 различных файлов (все они были большими матрицами, 465x1080) (это огромно для меня).Затем я использовал cbind2
, чтобы сделать их все одной большей матрицей (465x200000).
Я сделал это, потому что мне нужно было создать один отдельный файл для каждой строки (465 файлов), и я подумал, что это будет легче дляR загрузить данные из 1 файла в память только ОДИН РАЗ, а затем просто прочитать строку в строке, создав отдельный файл для каждого из них, вместо того, чтобы открывать и закрывать 200 разных файлов для каждой строки.
Это действительно более быстрый путь?(Мне интересно, потому что сейчас для этого требуется довольно много).Когда я проверяю в диспетчере задач из Windows, он показывает объем оперативной памяти, используемой R, и он все время идет от 700 МБ до 1 ГБ до 700 МБ (дважды в секунду).Похоже, что основной файл не был загружен только один раз, но он загружается и стирается из памяти на каждой итерации (что может быть причиной того, что он немного медленный?).
Я новичок, поэтому все, что я написал, может не иметь никакого смысла.
Вот мой код: (эти +1 и -1, потому что исходные данные имеют 1 дополнительный столбецчто мне не нужно в новых файлах)
extractStationData <- function(OriginalData, OutputName = "BCN-St") {
for (i in 1:nrow(OriginalData)) {
OutputData <- matrix(NA,nrow = ncol(OriginalData)-1,3)
colnames(OutputData) <- c("Time","Bikes","Slots")
for (j in 1:(ncol(OriginalData)-1)) {
OutputData[j,1] <- colnames(OriginalData[j+1])
OutputData[j,2] <- OriginalData[i,j+1]
}
write.table(OutputData,file = paste(OutputName,i,".txt",sep = ""))
print(i)
}
}
Есть мысли?Может быть, я должен просто создать объект (огромный файл) перед первым циклом for, а затем он будет загружен только один раз?
Заранее спасибо.