当你这样做时我注意到了:
mapply(function(x) { x }, c(as.Date('2014-1-1'), as.Date('2014-2-2')))
R会自动将日期向量转换为数字向量。有没有办法禁用这种行为?
我知道你可以把结果包装成as.Date(...,origin ='1970-1-1'),但我只能想象这里必须有更好的解决方案。
答案 0 :(得分:4)
这与mapply
通过simplify2array
简化结果的方式有关。
x <- list(as.Date('2014-1-1'), as.Date('2014-2-2'))
simplify2array(x, higher = FALSE)
# [1] 16071 16103
您可以关闭简化,然后手动缩小列表。
do.call(c, mapply(I, x, SIMPLIFY = FALSE))
# [1] "2014-01-01" "2014-02-02"
或者您可以将Map
与Reduce
(或do.call
)一起使用
Reduce(c, Map(I, x))
# [1] "2014-01-01" "2014-02-02"
Map
基本上是mapply(..., SIMPLIFY = FALSE)
,我使用I
代替function(x) { x }
,因为它只是按原样返回其输入。