6

?read.table指出:

The number of data columns is determined by looking at the first five lines of input
(or the whole file if it has less than five lines), or from the length of col.names
if it is specified and is longer. This could conceivably be wrong if fill or
blank.lines.skip are true, so specify col.names if necessary (as in the ‘Examples’).

我需要使用fill参数,我的一些 txt 文件可能在第 5 行之后具有列数最多的行。我不能使用标题,只是因为我没有它并且 col.names 将在导入后定义,所以我想将 R 使用的这 5 行更改为整个文件,(我没有请注意我能得到的任何速度损失)。有什么建议吗?谢谢!

编辑:

刚刚在代码中找到了这个read.table

if (skip > 0L) 
    readLines(file, skip)
nlines <- n0lines <- if (nrows < 0L) 
    5
else min(5L, (header + nrows))
lines <- .External(C_readtablehead, file, nlines, comment.char, 
    blank.lines.skip, quote, sep)
nlines <- length(lines)

我可以只更改5上述代码第 4 行中的数字吗?这会对read.table行为产生任何副作用吗?

编辑2:

我目前正在使用这种方法

maxCol <- max(sapply(readLines(filesPath), function(x) length(strsplit(x, ",")[[1]])))

拥有最大列数,并将结果创建为 dummy col.nameslike paste0("V", seq_len(maxCol))。你认为仍然值得拥有另一个read.table有可能选择它的人吗?

4

1 回答 1

5

使用count.fields,例如,

read.table(filesPath, colClasses=rep(NA, max(count.fields(filesPath))), fill=TRUE)
于 2013-05-16T12:10:55.747 回答