Я пытаюсь написать функцию, которая очищает электронные таблицы.Однако некоторые таблицы повреждены и не открываются.Я хочу, чтобы функция распознала это, напечатала сообщение об ошибке и пропустила выполнение остальной части функции (поскольку я использую lapply()
для итерации по файлам) и продолжаю.Моя текущая попытка выглядит следующим образом:
candidate.cleaner <- function(filename){
#this function cleans candidate data spreadsheets into an R dataframe
#dependency check
library(readxl)
#read in
cand_df <- tryCatch(read_xls(filename, col_names = F),
error = function (e){
warning(paste(filename, "cannot be opened; corrupted or does not exist"))
})
print(filename)
#rest of function
cand_df[1,1]
}
test_vec <- c("test.xls", "test2.xls", "test3.xls")
lapply(FUN = candidate.cleaner, X = test_vec)
Тем не менее, он по-прежнему выполняет строку функции после оператора tryCatch
, когда ему дан .xls
файл, который не существует, который выбрасывает остановку, так как яЯ пытаюсь проиндексировать информационный фрейм, который не существует.Это выходит из вызова lapply
.Как мне написать вызов tryCatch
, чтобы пропустить выполнение остальной части функции без выхода из lapply
?