我需要在R读取一个csv文件。我的文件有100行,我想在10行读取10行。例如:
我尝试使用for(i in 1:10)或while,但我无法在11之后,22之后读取文件等等。
有人知道我该怎么做?
谢谢!
答案 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