如何跳过R中read.table()中的空白文件

如何跳过R中read.table()中的空白文件,r,read.table,R,Read.table,我想使用R中的read.table读取文件夹中的大量文本文件,但这些文本文件中有一些空白文件,在使用以下代码时出现错误 filenames<-list.files("M:/files/test1",pattern=".txt"); datalist<-lapply(filenames,function(name){ read.table(paste("M:/files/test1/",name,sep=""),head=FALSE,stringsAsFactors=FALSE,s

我想使用R中的read.table读取文件夹中的大量文本文件,但这些文本文件中有一些空白文件,在使用以下代码时出现错误

filenames<-list.files("M:/files/test1",pattern=".txt");
datalist<-lapply(filenames,function(name){
  read.table(paste("M:/files/test1/",name,sep=""),head=FALSE,stringsAsFactors=FALSE,sep="\t")
})

文件名最简单的方法是使用
try添加一个简单的错误捕获机制:

datalist<-lapply(filenames,function(name){
  x <- try(read.table(paste("M:/files/test1/",name,sep=""),head=FALSE,stringsAsFactors=FALSE,sep="\t"))
  if(inherits(x, "try-error"))
    return(NULL)
  else
    return(x)
})
与只引入错误而不尝试
try
相比,程序将停止并且
x
将被取消定义:

rm(x)
x <- stop("Test error")
# Error: Test error
x
# Error: object 'x' not found
跳过空文件

测试每个文件的大小,并跳过文件大小0

for (file in list.files(,"*.txt")){
    if (file.size(file) == 0) next
    print(file)
}

非常感谢。也许我没有把我的问题描述清楚!文本文件存在,但文本文件的内容为空。我只是想知道,当我在read.table(way,head=FALSE,stringsAsFactors=FALSE,sep=“\t”):“input@pascal中没有可用的行这会导致错误:
Error in FUN(X[[I]],…):break/next没有循环,跳到顶层
x <- try(1)
x
# [1] 1
for (file in list.files(,"*.txt")){
    if (file.size(file) == 0) next
    print(file)
}