如何在10行中读取10个csv文件

时间:2015-12-04 01:46:01

标签: r file csv

我需要在R读取一个csv文件。我的文件有100行,我想在10行读取10行。例如:

  1. 阅读第10行
  2. 从11开始读10行,因为我已经阅读了10
  3. 在22开始阅读10行,依此类推......
  4. 我尝试使用for(i in 1:10)或while,但我无法在11之后,22之后读取文件等等。

    有人知道我该怎么做?

    谢谢!

2 个答案:

答案 0 :(得分:2)

之前可能已多次回答(例如,me),但这里有一些数据

fl = tempfile()
dim(mtcars)
write.csv(mtcars, file=fl)

使用connection打开文件,然后阅读10行

fin = file(fl, open="r")
nrows <- 10
data <- read.csv(fin, nrows=nrows)      # first chunk

记住列名和类

col.names <- names(data)                # remember column names and...
colClasses <- sapply(data, class)       # ... column classes

然后处理块并读入下一个数据块,确保添加头和列类。当没有更多数据时停止阅读。

repeat {
    ## process data...
    cat("Read", nrow(data), "rows\n")
    ## ...then read the next chunk
    data <- read.csv(fin, header=FALSE, colClasses=colClasses,
                     col.names=col.names, nrows=nrows)
    if (nrow(data) == 0)                # done yet?
        break
}

mtcars有32行,我们看到了

Read 10 rows
Read 10 rows
Read 10 rows
Read 2 rows

我们可以验证每个块是否具有正确的标头,并且列都具有一致的类。可能存在各个因素和不一致的级别问题,特别是在阅读小块时;也许论证stringsAsFactors=FALSE是合适的?

答案 1 :(得分:1)

pickle.HIGHEST_PROTOCOL