我正在循环使用大量文件,但代码在遇到一个文件出现问题时会停止:
files= paste("C:\\Users\\data_ ", data1$column, "_", data1$row, ".txt", sep="")
for(i in 1:length(files)){
wf <- read.table(files[i], sep=' ', header=TRUE)
wf=subset(wf, !is.na(scan))
here, for instance, `wf` would be:
[1] date1 date2 scan
<0 rows> (or 0-length row.names)
do stuf...............
}
所以这里的代码将停止并通过此错误:
Error in data.frame(date = resf$wdDate, obs, mod = daf):
arguments imply differing number of rows: 0, 1
我希望循环只是忽略这个(有问题的)文件,并且不会在循环中继续进行,而是去读取下一个文件等等
答案 0 :(得分:1)
使用try( ..code.. )
或tryCatch( ..code.. )
声明。这是我知道解释它的最佳链接,关于异常处理的部分更进一步。
http://adv-r.had.co.nz/Exceptions-Debugging.html
这是一个使用try
忽略文件读取错误的简单循环
files <- c("f1","f2","f3")
for (i in 1:length(files)){
try(
{
print(files[i])
df <- read.csv(files[i])
},silent=T
)
}
这是另一个使用tryCatch
忽略文件读取错误的文件
files <- c("f1","f2","f3")
for (i in 1:length(files)){
tryCatch(
{
print(files[i])
df <- read.csv(files[i])
},
error = function(c) "error",
warning = function(c) "warning",
message = function(c) "message"
)
}