请参阅此玩具示例。
这是一个带有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)
那么这里发生了什么?