如何解决:“as.POSIXct.numeric(X [[2L]],...)中的错误:必须提供”origin“

时间:2013-10-18 12:07:53

标签: r loops time

我们创建了以下循环来绘制数据的不同部分(使用包“latticeExtra”)。

library("latticeExtra")
All_dates<-unique(fad$Meet_date)
for (i in 1:11) { Date.i <- All_dates[i]
  layoutno <- unique(fad[fad$Meet_date == Date.i,28] )
  Data.i <- fad[fad$Meet_date == Date.i, ]
  Data.i$newtime <- as.POSIXct(Data.i$DateTime)
  prop <- with(Data.i,tapply(newtime,klasse, max))-with(Data.i,tapply(newtime,klasse, min))
png(paste(Date.i, ".png", sep = ""), height = 20, width = 30, units = "cm", res = 400)
dog <- xyplot(Ratio ~ Meet_times |as.factor(klasse), data = Data.i, main = paste(Date.i), 
layout = c(layoutno,1), scales = list(x = list(relation = "free",format  = "%H:%M")), 
xlab = "Time of measurement", ylab = "Ratio CH4/CO2")
print(resizePanels(dog,w = prop))
dev.off() }

但是,我们得到这个:as.POSIXct.numeric(X [[2L]],...)出错:必须提供'origin'..
我是R的大菜鸟,所以我不知道这个问题可能在哪里。我的同事似乎也失去了..我知道这是一个很大的代码,但我希望有人能看到问题,我试过了在这个网站和谷歌上进行了几次搜索,但这并没有给我任何有用的信息。

请帮帮忙?非常感谢提前!

1 个答案:

答案 0 :(得分:1)

嗯,很容易让这个问题消失,但你需要小心让日期转换正确。问题是您将数字传递给as.POSIXct而不是Date对象,并且当您传递一个整数时,您需要给出一个原始日期,以便它可以计算偏移量。例如:

> date<-as.Date("2013-10-18")
> as.POSIXct(date)
[1] "2013-10-17 20:00:00 EDT"
> date0<-unclass(date)
> date0
[1] 15996
> as.POSIXct(date0)
Error in as.POSIXct.numeric(date0) : 'origin' must be supplied

真正的问题是,您如何在fad$Meet_date中表示日期(以及为什么要将它们转换为POSIXct)。正确的来源和转换将取决于fad$Meet_date代表的内容。