用r保存矩阵中的日期(“必须提供原点”)

时间:2016-05-09 09:18:16

标签: r date datetime strptime

我正在写我的学士论文,到目前为止我对r没有多少经验。 我的问题是我用这个命令做的日期:

t<-strptime(x, "%d.%m.%Y %H.%M") 

当我将它们保存在矩阵中时,不再有效,并且在这些特定日期有其他信息。

我有点困惑,因为当我没有将它们放在像这样的矩阵中时它可以正常工作t[1:10]

但是一旦我尝试将它们保存在矩阵中就会发生这种情况

matrix1<-matrix(c(t,v2,v3,v4),nrow=length(v2))

Fehler in as.POSIXct.numeric(X[[i]], ...) : 'origin' muss angegeben werden

这是德语,但它意味着必须提供原产地。

我有什么想法要解决它吗?我有点沮丧:))

2 个答案:

答案 0 :(得分:0)

import kivy kivy.require('1.0.6') # replace with your current kivy version ! from kivy.app import App from kivy.uix.label import Label class MyApp(App): def build(self): return Label(text='Hello world') if __name__ == '__main__': MyApp().run() (顺便说一句名字很容易与t函数混淆)是一个POSIXlt对象,它在内部是一个列表。首先,您应该检查t返回的内容(我不知道如何定义c(t,v2,v3,v4)等)。

然后我们可以查看v2中的文档:

  

数据
  可选的数据向量(包括列表或表达向量)。非原子类R对象由as.vector强制并且所有属性都被丢弃。

重要的一点是&#34;所有属性都被丢弃&#34;。如果丢弃POSIXlt对象的属性(包括class属性),这就是你得到的:

help("matrix")

矩阵不能包含POSIXlt对象(或任何对象,即具有显式类的任何对象)。

答案 1 :(得分:0)

罗兰是对的。您不能在矩阵中包含Posixlt对象。您可以做的是将这些日期保存为矩阵中的数字时间戳,并在访问时将它们转换回日期 转换为数字时间戳:

>date<- as.numeric(as.POSIXct("2014-02-16 2:13:46 UTC",origin="01-01-1970"))
>date
[1] 1392545626

然后将这些时间戳保存在矩阵中并将其转换回日期,再次使用上述命令而不将其转换为数字。