【发布时间】:2015-06-20 09:32:49
【问题描述】:
如何将大型 csv 文件读入 R 中的数组切片? 我有 500 个 480 行和 640 列的 csv 文件,其中包含热像仪的数据。我想做的是一个尺寸为 640 x 480 x 500 的阵列,实际上阵列的每个切片都包含一张由热像仪拍摄的照片(640 x 480 像素(以°C 为单位的值))。直到现在,我将 csv 文件放在带有 for 循环的矩阵列表中,然后将它们取消列出以创建一个数组。这样做的问题是我的计算机 RAM 很快就满了,所以一次将数据存储在一个数组中可能会更好,但我只是不知道该怎么做。无论如何,我需要数组格式的数据以进行进一步计算。
matrices<-list()
for (i in 0:endval){
filenumber<-sprintf("%03d",(i+1))
matrices[[i+1]]<-read.csv2(file=paste(nameoffile,filenumber,".csv",sep=""),header=F)
}
array1<-array(unlist(matrices), dim = c(nrow(matrices[[1]]), ncol(matrices[[1]]), length(matrices)))
提前致谢!
【问题讨论】:
-
格式化它的最佳方式可能更多地取决于您将如何使用它。在大多数情况下,我可能会选择将其存储为矩阵列表而不取消列出,但这又取决于。
-
对于大多数应用程序,矩阵列表可以完成这项工作,但在某一时刻,我必须取平均值作为 st.dev。在 z 轴上,所以是所有 500 张图片的平均值。我找到了一种对数组执行此操作的方法,但不适用于矩阵列表。是否可以从数组中提取一个切片到矩阵?如果是这种情况,我宁愿将数据放在一个数组中。
标签: arrays r csv for-loop matrix