我在R中导入一个excel文件。它的一些标签是空的。 R没有阅读这些标签。它给了我一个错误:跳过所有数据。
library(readxl)
sheetnames = excel_sheets("Saudi Diapers.xlsx")
k = length(sheetnames)
i=1
for(i in 1:k) {
abc = read_excel("Saudi Diapers.xlsx",i`,col_names = T)
rownames(abc) = NULL
tabname = paste(sheetnames[i], ".csv")
write.csv(file=paste("Saudi Diapers",tabname,sep = "_"), x= abc, row.names = F,na="",sep = "")
}
答案 0 :(得分:1)
你可以用两种方式做到这一点:
1.改变函数read_excel
,使其不会产生错误,但会返回一个空的数据框
2.使用tryCatch
捕获错误并返回空数据帧。
我在这里选择了第二个选项。 tryCatch函数本质上尝试执行表达式(在本例中为read_excel(...)
),如果生成错误,则返回错误条件中的函数(在本例中为data.frame(NULL)
)。
library(readxl)
我制作了一张excel表,里面有一张纸和两张空纸 filename< - " test_blanksheet.xlsx" #Put your own filename
sheetnames = excel_sheets(filename)
for(i in 1:length(sheetnames)) {
tempdf = tryCatch(read_excel(filename,i,col_names = T),
error = function(err) { data.frame(NULL)})
write.csv(file=paste0("Saudi_Diapers_",sheetnames[i],".csv"), x= tempdf,
row.names = F,na="")
}
它有效:
list.files()
[1]" Saudi_Diapers_Data2.csv" " Saudi_Diapers_Empty1.csv"
[3]" Saudi_Diapers_Empty3.csv" " test_blanksheet.xlsx"