带有lubridate周期类变量的data.table在100行后行为不正常

时间:2017-11-11 18:10:43

标签: r data.table

请参阅此玩具示例。

这是一个带有lubridate:: period类的101行数据框。是的,重要的是要使其成为101,因为在100它可以工作。

df_arun1 <- data.frame(time2 = 1:5, timesec = rep(period(c(90, 5), c("second", "minute")), 101))

现在我们将把这个玩具数据帧转换为数据表

as.data.table(df_arun1)->dt_arun1

现在让我们尝试输出数据表。

dt_arun1

Error in data.frame(time2 = 1:5, timesec = rep(period(c(90, 5), c("second",  : 
  arguments imply differing number of rows: 5, 101

但是,如果我创建一个100行data.data.table,它就可以工作。

见:

df_arun2 <- data.frame(time2 = 1:5, timesec = rep(period(c(90, 5), c("second", "minute")), 100))

as.data.table(df_arun2)->dt_arun2

现在,如果在命令行中键入dt_arun2,则会获得所有100行。 但是如果你使用head它会再次失败并出现相同的错误加上一个特殊的警告。

head(dt_arun2)

 Error in dimnames(x) <- dn : 
  length of 'dimnames' [1] not equal to array extent
In addition: Warning message:
In cbind(time2 = c("1", "2", "3", "4", "5", "1"), timesec = c("5M 90S",  :
  number of rows of result is not a multiple of vector length (arg 1)

那么这里发生了什么?

0 个答案:

没有答案