2013-10-18 42 views
0

我们已经创建了下面的循环绘制数据的不同部分(与“latticeExtra”包)。如何解决:“错误as.POSIXct.numeric(X [2L],...):‘出身’,必须提供”

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],...): '出身',必须提供..
我是一个很大的小白有R ,所以我不知道这个问题可能在哪里..我的同事似乎也失去了..我知道这是一个大代码,但我有点希望有人看到问题rigthaway ..我尝试了几个搜索本网站和谷歌,但这没有让我有用。

请帮忙吗?提前感谢!

+0

这个错误告诉你到底问题出在哪里,和'帮助(“as.POSIXct.numeric”)'对如何解决这样的例子。 –

+1

是的,所以我填写了一个错误的列号作为参考点,那就是错误。我们忘了我们在脚本的前面添加了一列,所以不是使用第28列,它需要使用第29列。这些列之间的区别是一个是数字,另一个是POSIXlt ..可能,这就是为什么我得到那个错误..你可以说这种愚蠢。无论如何,感谢所有花时间帮助我的人! – Jalalala

回答

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

相关问题