Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 涂抹润滑油_R_Date_Lubridate - Fatal编程技术网

R 涂抹润滑油

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))

我对日期转换有问题。如果我在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))

     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()