我使用以下方法导入大量文本文件:
d <- read.table(fid, skip = 21, header = FALSE, comment.char = '/', sep = '\t', fill = TRUE)
其中fid是在循环中定义的,所以我在每次迭代中加载一个不同的文件。我遇到的问题是我需要跳过的行数因文件而异。例如,在这个特定的文件中我需要跳过21,而在下一个文件中它将是22.我需要跳过的行在文件中由&#39; / *&#39;标识。例如:
/* DATA DESCRIPTION:
blah blah
blah blah
*/
data starts here
所以对于这个例子,我会使用
d <- read.table(fid, skip = 4, header = FALSE, comment.char = '/', sep = '\t', fill = TRUE)
我想到的一个选项是通过终端删除所有这些行,但必须有一种方法在R中执行此操作。
有什么想法吗?
答案 0 :(得分:1)
要跟进@Thomas的评论,您可以尝试以下方法:
for(file in fileList) {
# find skip line
temp <- readLines(file)
skipLine <- which(temp == "*/")
# read in file
d <- read.table(file, skip = skipLine, header = FALSE, comment.char = '/', sep = '\t', fill = TRUE)
}
如果您知道注释行的最大数量且文件大小相当大,则可以在n
函数的readLines()
参数中使用此参数来减小读取的大小和加快这个过程。