为什么apply()将日期对象转换为数字对象?

时间:2015-04-30 12:50:32

标签: r apply

为什么apply()在调用用户函数之前将我的日期对象转换为数字?

apply(matrix(seq(as.Date("2010-01-01"), as.Date("2010-01-05"), 1)), 1, function(x) { return(class(x)) })
[1] "numeric" "numeric" "numeric" "numeric" "numeric"

为什么as.Date()默认情况下没有将origin参数设置为“1970-01-01”?

> as.Date(apply(matrix(seq(as.Date("2010-01-01"), as.Date("2010-01-05"), 1)), 1, function(x) { return(x) }))
Error in as.Date.numeric(apply(matrix(seq(as.Date("2010-01-01"), as.Date("2010-01-05"),  : 
  'origin' must be supplied
> as.Date(apply(matrix(seq(as.Date("2010-01-01"), as.Date("2010-01-05"), 1)), 1, function(x) { return(x) }), origin="1970-01-01")
[1] "2010-01-01" "2010-01-02" "2010-01-03" "2010-01-04" "2010-01-05"

1 个答案:

答案 0 :(得分:0)

基础包中有一个函数seq.Date,允许您为Date对象创建一个序列。但是矩阵仍然只会采用原子向量,因此您只需要在需要使用Date时再次调用as.Date(),或者只是将其存储在数据帧中,因为它可以保存" Date&#34 ;类值。

至于as.Date的默认参数,我不认为将1970设置为默认值是有意义的。如果人们出于任何可能的原因分析之前的数据会怎么样?