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