【问题标题】:How to solve: "Error in as.POSIXct.numeric(X[[2L]], ...) : 'origin' must be supplied"如何解决:“as.POSIXct.numeric(X[[2L]], ...) 中的错误:必须提供'origin'”
【发布时间】:2013-10-18 12:07:52
【问题描述】:

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

请帮忙?提前非常感谢!

【问题讨论】:

  • 错误告诉你问题出在哪里,help("as.POSIXct.numeric")有解决方法的例子。
  • 是的,所以我填写了错误的列号作为参考点,这就是问题所在。我们忘记了我们之前在脚本中添加了一列,所以不是使用第 28 列,而是需要使用第 29 列。这些列之间的区别在于,一个是数字,另一个是 POSIXlt。可能,这就是为什么我得到那个错误..你可以说有点愚蠢。无论如何,感谢所有愿意花时间帮助我的人!

标签: r loops time


【解决方案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 代表什么。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-01
    • 1970-01-01
    • 2019-11-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2020-05-03
    • 1970-01-01
    相关资源
    最近更新 更多