0

我们创建了以下循环来绘制数据的不同部分(使用包“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 的大菜鸟,所以我不知道这个问题出在哪里可能撒谎..我的同事似乎也迷路了..我知道这是一个很大的代码,但我有点希望有人能立即看到问题..我在这个网站和谷歌上尝试了几次搜索,但这并没有让我得到任何东西有用。

请帮忙?提前非常感谢!

4

1 回答 1

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代表什么。

于 2013-10-18T12:16:53.127 回答