为什么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"
答案 0 :(得分:0)
基础包中有一个函数seq.Date
,允许您为Date对象创建一个序列。但是矩阵仍然只会采用原子向量,因此您只需要在需要使用Date时再次调用as.Date()
,或者只是将其存储在数据帧中,因为它可以保存" Date&#34 ;类值。
至于as.Date的默认参数,我不认为将1970设置为默认值是有意义的。如果人们出于任何可能的原因分析之前的数据会怎么样?