Mam poniżej przykładową funkcję, która odczytuje datę jako ciąg znaków i zwraca go jako obiekt daty. Jeśli odczytuje ciąg, którego nie może przekonwertować na datę, zwraca błąd.Jak powiedzieć lapply, aby zignorować błąd i przetworzyć kolejną rzecz na liście?
testFunction <- function (date_in) {
return(as.Date(date_in))
}
testFunction("2010-04-06") # this works fine
testFunction("foo") # this returns an error
Teraz chcę użyć lapply i zastosować tę funkcję na liście dat:
dates1 = c("2010-04-06", "2010-04-07", "2010-04-08")
lapply(dates1, testFunction) # this works fine
Ale jeśli chcesz zastosować funkcję na liście, gdy jeden ciąg w środku dwóch dobre daty zwraca błąd, jaki jest najlepszy sposób, aby sobie z tym poradzić?
dates2 = c("2010-04-06", "foo", "2010-04-08")
lapply(dates2, testFunction)
Przypuszczam, że chcę złapać try tam, ale czy jest jakiś sposób, aby złapać błąd dla „foo” string podczas gdy pytając lapply kontynuować i czytać trzeci dzień?
bardzo ściśle powiązane: http://stackoverflow.com/questions/1395622/debugging-lapply-sapply-calls – Shane