尝试这个:
toCls <- function(x, cls) do.call(paste("as", cls, sep = "."), list(x))
replace(DF,, Map(toCls, DF, cls))
第二个例子。也可以尝试这个例子(它允许NA
用于任何类别不改变的列)。我们加载动物园包,因为它提供了一个版本as.Date
有一个默认的原点,我们定义自己的as.POSIXct2
同样避免必须另外指定来源。
library(zoo) # supplies alternate as.Date with a default origin
as.NA <- identity
as.POSIXct2 <- function(x) as.POSIXct(x, origin = "1970-01-01")
cls2 <- c("character", "Date", NA, "factor", "POSIXct2")
replace(DF,, Map(toCls, DF, cls2))
请注意,仅当将数字转换为"Date"
or "POSIXct"
存在来源方面的考虑以及在转换字符串时,例如"2000-01-01"
在任何情况下都不需要指定来源,因此对于这种情况,我们不需要加载动物园,也不需要我们自己的版本as.POSIXct
.
编辑:添加了另一个例子。