> f = function(x) as.Date(as.character(x), format='%Y%m%d')
> f(20110606)
[1] "2011-06-06"
> sapply(20110606, f)
[1] 15131
为什么2个返回值不一样。我需要将此函数应用于很长的日期向量,但我没有使用 sapply() 获取日期!
您用来创建的函数f
已经矢量化。没有必要使用sapply
,除非您在冗余部门工作。
> f <- function(x) as.Date(as.character(x), format='%Y%m%d')
> d <- 20110606 + 0:10
> f(d)
[1] "2011-06-06" "2011-06-07" "2011-06-08" "2011-06-09"
[5] "2011-06-10" "2011-06-11" "2011-06-12" "2011-06-13"
[9] "2011-06-14" "2011-06-15" "2011-06-16"
> lapply(20110606, f)
[[1]]
[1] "2011-06-06"
> unlist(lapply(20110606, f))
[1] 15131
sapply
取消列出 lapply 并在这样做时取消分类日期
> unclass(lapply(20110606, f)[[1]])
[1] 15131
> class(lapply(20110606, f)[[1]])
[1] "Date"
正如@Joshua Ulrich 所指出的,没有必要使用应用类型函数,但是出于兴趣
d <- 20110606 + 0:10
do.call("c",lapply(d, f))
将是“取消列出”日期的一种可能方式