0

我正在尝试分段导入和导出一个 10GB 的 CSV 文件,其中包含大约 1000 万个观察值。最后我想要大约 10 个可管理的 RData 文件(data_1.RDatadata_2.Rdata等),但我在制作skipnrows动态时遇到了麻烦。我nrows永远不会改变,因为我每个数据集需要近 100 万行,但我想我需要一些等式,skip=以便每个循环增加以捕获接下来的 100 万行。此外,由于只有第一行将包含变量名,因此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="")))

    }
4

1 回答 1

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 = "")))
}
于 2014-12-15T18:19:17.620 回答