转换日期时间向量

时间:2013-08-19 08:16:33

标签: r

我希望df3和df4具有相同的输出,但它不是,有什么区别?

tim.seq<-seq(as.POSIXlt("2013-07-01 00:00:00",origin = "1960-01-01",tz="GMT"),
             as.POSIXlt("2013-07-16 12:00:00",origin = "1960-01-01",tz="GMT"),by="12 hours")
df<-data.frame(times=factor(tim.seq))

df2<-df
df2[,"times"]<-as.POSIXlt(as.character(df2[,"times"]),origin = "1960-01-01",tz="GMT")

df3<-df
df3$times<-as.POSIXlt(as.character(df3[,"times"]),origin = "1960-01-01",tz="GMT")
for(i in df3$times) print(i)

t<-as.POSIXlt(as.character(df[,"times"],origin = "1960-01-01",tz="GMT"))
df4<-data.frame(times=t)
for(i in df4$times) print(i)

1 个答案:

答案 0 :(得分:0)

不同之处如下:

typeof(df3$times) # type = "list"

typeof(df4$times) # type = "double"

typeof(unlist(df3$times)) # now it has the same type (double)

因为两者的类型不同,所以输出不同,因为R以不同的方式打印它们。

更有趣的是为什么会出现差异的问题。我认为(如果我错了,请纠正我)不同之处在于,在第一种情况下,它会使用列表覆盖df3$times。在第二种情况下,您直接构造df,因此在索引后获得double类型,在第一种情况下,在索引后获得list

也许其他人有更好的解释......

HTH