【发布时间】:2021-10-30 11:01:28
【问题描述】:
如何在 R 中用日期列初始化一个空数据框?
我尝试了很多方法,但是当我尝试在正确的列中附加带有日期的行时,它们都会生成错误消息。例如:
> test <- data.frame(date=as.Date(character()), var1 = as.numeric(), var2 = as.numeric())
> str(test)
'data.frame': 0 obs. of 3 variables:
$ date: 'Date' num(0)
$ var1: num
$ var2: num
> test <- rbind(test, c(as.Date("2020-01-01"), 123, 456))
Error in as.Date.numeric(e) : 'origin' must be supplied
将第一列初始化为整数,然后将“Date”类添加到它会产生相同的错误:
> test <- data.frame(date=integer(0), var1=as.numeric(), var2=as.numeric())
> str(test)
'data.frame': 0 obs. of 3 variables:
$ date: int
$ var1: num
$ var2: num
> class(test$date) <- "Date"
> str(test)
'data.frame': 0 obs. of 3 variables:
$ date: 'Date' int(0)
$ var1: num
$ var2: num
> test <- rbind(test, c(as.Date("2020-01-01"), 123, 456))
Error in as.Date.numeric(e) : 'origin' must be supplied
我也搜索过此错误消息,但我发现的示例都涉及将数字转换为日期。我无法在我的上下文中找到任何示例。
初始化日期列的正确方法是什么,以便我可以像上面那样向它添加格式化的日期?
谢谢!
【问题讨论】:
-
顺便说一句,有时值得分解代码以调试它为什么不起作用。
c(as.Date("2020-01-01"), 123, 456)单独不起作用,甚至在您到达rbind步骤之前。这是因为 R 试图将123和456转换为Date类,但它不知道“第 0 天”的原点。 -
好点。谢谢。