我试图导入和导出一个10GB的CSV文件,大约有1000万个观察值。我最终想要大约10个可管理的RData文件(data_1.RData
,data_2.Rdata
等),但我在制作skip
和nrows
动态时遇到问题。我的nrows
永远不会改变,因为我每个数据集需要近100万,但我认为我需要skip=
的一些等式,以便每个循环增加以捕获下一个数据集百万行。此外,由于只有第一行包含变量名称,因此header=T
可能会使ii=1
上的任何内容搞乱。以下是我正在使用的大部分代码:
for (ii in 1:10){
data <- read.csv("myfolder/file.csv",
row.names=NULL, header=T, sep=",", stringsAsFactors=F,
skip=0, nrows=1000000)
outName <- paste("data",ii,sep="_")
save(data,file=file.path(outPath,paste(outName,".RData",sep="")))
}
答案 0 :(得分:1)
(未经测试,但......)您可以尝试这样的事情:
nrows <- 1000000
ind <- c(0, seq(from = nrows, length.out = 10, by = nrows) + 1)
header <- names(read.csv("myfolder/file.csv", header = TRUE, nrows = 1))
for (i in seq_along(ind)) {
data <- read.csv("myfolder/file.csv",
row.names = NULL, header = FALSE,
sep = ",", stringsAsFactors = FALSE,
skip = ind[i], nrows = 1000000)
names(data) <- header
outName <- paste("data", ii, sep = "_")
save(data, file = file.path(outPath, paste(outName, ".RData", sep = "")))
}