要构建用于打印的表格,我想rbind
向data.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.frame
,data.table
或list
在这个简单的例子中,我可以通过指定
来解决这个问题bind <- list(0, 1, 1)
但事情可能会更复杂:
bind <- list(0, dt[ , .(mean(var1), mean(var2))])
符:
rbindlist(l, use.names,fill)
中的错误: 第2项有2列,与第1项有3列不一致。如果您需要填充缺失的列,请使用set argumentfill
到TRUE
。
当然问题是dt[...]
整体被发送到bind
的第二个元素,意味着bind
只有两个元素。
我可以通过指定来解决这个问题:
bind <- dt[ , .(0, mean(var1), mean(var2))]
但是对于更复杂的绑定来说这会变得更加混乱,并且需要use.names = FALSE
,这有可能搞砸其余的绑定(例如,如果我绑定rbind(dt1, dt2, c(0, 1, 1))
,它并不总是dt1
和dt2
的列按顺序排列的情况;此处的解决方案是rbind(rbind(dt1, dt2), dt[ , .(0, 1, 1)], use.names = FALSE)
,但这似乎又不必要了。
为什么我们不能将简单的向量传递给rbind
?