我们创建了以下循环来绘制数据的不同部分(使用包“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的大菜鸟,所以我不知道这个问题可能在哪里。我的同事似乎也失去了..我知道这是一个很大的代码,但我希望有人能看到问题,我试过了在这个网站和谷歌上进行了几次搜索,但这并没有给我任何有用的信息。
请帮帮忙?非常感谢提前!
答案 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
代表的内容。