R 涂抹润滑油
我对日期转换有问题。如果我在apply中使用ymd,它将返回一个数字,或者如果我只使用ymd,它将正常工作。 有人会知道吗R 涂抹润滑油,r,date,lubridate,R,Date,Lubridate,我对日期转换有问题。如果我在apply中使用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))
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"
库(lubridate)
a使用lappy()
:
更新/解释
apply()
文档说明:
在所有情况下,在设置维度之前,as.vector将结果强制为基本向量类型之一,因此(例如)因子结果将强制为字符数组
正如J.Ulrich在对“日期并非严格意义上的向量”的评论中所说的那样lappy()
非常类似于apply()
,但是它将返回一个列表而不是向量。因此它能够处理日期。使用lappy()
:
更新/解释
apply()
文档说明:
在所有情况下,在设置维度之前,as.vector将结果强制为基本向量类型之一,因此(例如)因子结果将强制为字符数组
正如J.Ulrich在对“日期并非严格意义上的向量”的评论中所说的那样lappy()
非常类似于apply()
,但是它将返回一个列表而不是向量。因此它具有处理日期的能力。apply
尝试简化它,使用as.matrix
如果输入X是二维的,请参见以下示例:
as.matrix(ymd("2013-01-01"))
[,1]
[1,] 15706
?应用
详细信息
如果X不是数组,而是具有非空dim的类的对象
值(如数据帧),应用尝试将其强制到数组
如果是二维(如数据帧),则通过as.matrix或通过
as.array
apply
尝试将其简化,使用as.matrix
如果输入X是二维的,请参见以下示例:
as.matrix(ymd("2013-01-01"))
[,1]
[1,] 15706
?应用
详细信息
如果X不是数组,而是具有非空dim的类的对象
值(如数据帧),应用尝试将其强制到数组
如果是二维(如数据帧),则通过as.matrix或通过
as.array
这里有一个使用mutate\u each
library(dplyr)
a %>%
mutate_each(funs(ymd))
# dates1 dates2
#1 2011-01-01 2013-01-01
#2 2011-02-01 2013-02-01
#3 2011-03-01 2013-03-01
这里有一个使用mutate\u each
library(dplyr)
a %>%
mutate_each(funs(ymd))
# dates1 dates2
#1 2011-01-01 2013-01-01
#2 2011-02-01 2013-02-01
#3 2011-03-01 2013-03-01
使用lappy()
,因为apply()
会将日期类删除为numeric。实际上,您应该只对矩阵使用apply()
。使用lappy()
,因为apply()
会将日期类删除为数字。实际上,您应该只对矩阵使用apply()
。