我有日期转换的问题。如果我在申请中使用ymd,它会返回一个数字,或者如果我只使用ymd,它会起作用。 有人会有任何想法吗?
library(lubridate)
a <- data.frame(dates1=c("2011-01-01",'2011-02-01','2011-03-01'),
dates2=c("2013-01-01",'2013-02-01','2013-03-01'))
apply(a, 2, FUN = function(x) ymd(x))
dates1 dates2
[1,] 1293840000 1356998400
[2,] 1296518400 1359676800
[3,] 1298937600 1362096000
ymd(a$dates1)
[1] "2011-01-01 UTC" "2011-02-01 UTC" "2011-03-01 UTC"
ymd(a$dates2)
[1] "2013-01-01 UTC" "2013-02-01 UTC" "2013-03-01 UTC"
答案 0 :(得分:3)
使用lapply()
:
lapply(a, function(x) ymd(x))
<强>更新/释强>
apply()
文档声明:
在所有情况下,在设置维度之前,as.vector会将结果强制转换为其中一个基本矢量类型,以便(例如)因子结果将被强制转换为字符数组。
正如J.Ulrich在对this answer的评论中所述,“日期不是严格的向量”。 lapply()
与apply()
非常相似,但它会返回一个列表而不是一个向量。因此它有能力处理日期。
答案 1 :(得分:3)
apply
尝试使用as.matrix
尝试简化它,如果输入 X 是二维的,请参阅此示例:
as.matrix(ymd("2013-01-01"))
[,1]
[1,] 15706
?apply
<强>详情
如果X不是数组,而是具有非null dim的类的对象 值(例如数据框)应用尝试将其强制转换为数组 如果它是二维的(例如,数据帧)或通过,则通过as.matrix as.array。
答案 2 :(得分:2)
以下是使用name
subName