Фронт:
v <- c("-", "TBD", NA, 12345)
as.Date(as.integer(v), origin="1899-12-30")
# Warning in as.Date(as.integer(c("-", "TBD", NA, 12345)), origin = "1899-12-30") :
# NAs introduced by coercion
# [1] NA NA NA "1933-10-18"
Пока у вас есть c("-", ..., 12345)
, 12345
никогда не будет совпадать, поскольку оно приведено к character
в векторе. Единственная причина, по которой вышеприведенный трюк работает, заключается в том, что он отменяет это принуждение.