`rbind.data.table`拒绝接受数字向量

时间:2015-05-06 22:29:12

标签: r data.table

要构建用于打印的表格,我想rbinddata.table的向量,例如:

dt <- data.table(id = 1:5, var1 = rnorm(5), var2 = runif(5))
bind <- c(0, 1, 1)

rbind(dt, bind)

但这会引发错误:

  

rbindlist(l,use.names,fill)中的错误:        列表输入的第2项不是data.framedata.tablelist

在这个简单的例子中,我可以通过指定

来解决这个问题
bind <- list(0, 1, 1)

但事情可能会更复杂:

bind <- list(0, dt[ , .(mean(var1), mean(var2))])

符:

  

rbindlist(l, use.names,fill)中的错误:        第2项有2列,与第1项有3列不一致。如果您需要填充缺失的列,请使用set argument fillTRUE

当然问题是dt[...]整体被发送到bind的第二个元素,意味着bind只有两个元素。

我可以通过指定来解决这个问题:

bind <- dt[ , .(0, mean(var1), mean(var2))]

但是对于更复杂的绑定来说这会变得更加混乱,并且需要use.names = FALSE,这有可能搞砸其余的绑定(例如,如果我绑定rbind(dt1, dt2, c(0, 1, 1)),它并不总是dt1dt2的列按顺序排列的情况;此处的解决方案是rbind(rbind(dt1, dt2), dt[ , .(0, 1, 1)], use.names = FALSE),但这似乎又不必要了。

为什么我们不能将简单的向量传递给rbind

0 个答案:

没有答案