R:未能归还对象

时间:2014-07-10 17:06:16

标签: r datetime

在查看Why does mapply not return date-objects?后,我仍无法解决问题。

问题:

我有一个日期值矩阵,我想通过以下函数将它们转换为日期对象:

convert_endDate <- function(e){
    d <- paste(e[1], e[2],e[3], sep = "-")
    print(as.Date(strptime(d, format = "%Y-%m-%d")))
    return(as.Date(strptime(d, format = "%Y-%m-%d"))) 
}

apply(end, 1,convert_endDate)

然而,它总是向我返回数字: [1] 16276 15850 14085 13569 13293 12473 12046 11316 10950 10950

现在,如何将其转换为Dates ???

数据矩阵end如下:

      eyr em   
 [1,] 2014  7 25
 [2,] 2013  5 25
 [3,] 2008  7 25
 [4,] 2007  2 25
 [5,] 2006  5 25
 [6,] 2004  2 25
 [7,] 2002 12 25
 [8,] 2000 12 25
 [9,] 1999 12 25
[10,] 1999 12 25

2 个答案:

答案 0 :(得分:2)

pasteas.Date都是矢量化的,因此不需要apply。由于as.Date首先尝试format "%Y-%m-%d",即此处paste产生的格式相同,因此不需要显式的format参数。

m <- matrix(data = c(2014, 7, 25, 2013,  5, 25), ncol = 3, byrow = TRUE)
m
#      [,1] [,2] [,3]
# [1,] 2014    7   25
# [2,] 2013    5   25

date <- as.Date(paste(m[ , 1], m[ , 2], m[ , 3], sep = "-"))
date
# [1] "2014-07-25" "2013-05-25"

str(date)
# Date[1:2], format: "2014-07-25" "2013-05-25"

另请参阅?apply:&#34;在所有情况下,as.vector都会将结果强制转换为其中一种基本矢量类型&#34;。

答案 1 :(得分:1)

end <- matrix(c(2014, 7, 25, 2013, 5, 25, 2008, 7, 25, 2007, 2, 25, 2006, 5, 25), ncol=3, byrow=T)
res <- apply(end,1, convert_endDate)

 as.Date(res, origin="1970-01-01")
 #[1] "2014-07-25" "2013-05-25" "2008-07-25" "2007-02-25" "2006-05-25"