Вы можете поместить тест класса в метод по умолчанию, например:
convert.default <- function(x) {
if (inherits(x, "POSIXct") ||
inherits(x, "factor") ||
inherits(x, "Date"))
as.character(x)
else
x
}
Это не совсем то, что вы хотите, потому что объект может иметь класс c("POSIXct", "other")
, и еслибыл установлен метод convert.other()
, он будет вызываться вместо значения по умолчанию.
Если вы действительно хотите запрашиваемое поведение, вам нужны три функции, но вы можете немного сэкономить, набрав
convert.Date <- convert.factor <- convert.POSIXct <- function(x) {
as.character(x)
}