绑定两个不同长度的 data.table

Binding two data.table with different length

我有一个 data.table 结构类似于

library(data.table) #load package
a <- as.data.table(matrix(1,10,10))
b <- as.data.table(matrix(2,2,2))

如您所见,它们具有不同的维度。 我想把这两个 data.table 放在一起。 结果应该是, 前十行/前十列是 "a" 第 11 和第 12 行/第 1 和第 2 列是 "b"

我需要这个的原因是因为我有一个数据集(a) 和一个脚注(b)。 我想合并它并将其导出为 xlsx 文件。所以在数据集下面是脚注。

我尝试通过 rbind cbind 这样做,但这要求我匹配长度,如果我这样做,"b" 每次重复 5 次以使长度与 "a" 匹配。

> y <- as.data.table(matrix(1,10,10))

> u <- as.data.table(matrix(2,2,2))

> merge(y, u, all = TRUE)

    V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
 1:  1  1  1  1  1  1  1  1  1   1
 2:  1  1  1  1  1  1  1  1  1   1
 3:  1  1  1  1  1  1  1  1  1   1
 4:  1  1  1  1  1  1  1  1  1   1
 5:  1  1  1  1  1  1  1  1  1   1
 6:  1  1  1  1  1  1  1  1  1   1
 7:  1  1  1  1  1  1  1  1  1   1
 8:  1  1  1  1  1  1  1  1  1   1
 9:  1  1  1  1  1  1  1  1  1   1
10:  1  1  1  1  1  1  1  1  1   1
11:  2  2 NA NA NA NA NA NA NA  NA
12:  2  2 NA NA NA NA NA NA NA  NA

使用 plyr 包:

library(plyr)
l1<-list(a,b)
ldply(l1,data.table)

导致:

   V1 V2 V3 V4 V5 V6 V7 V8 V9 V10
1   1  1  1  1  1  1  1  1  1   1
2   1  1  1  1  1  1  1  1  1   1
3   1  1  1  1  1  1  1  1  1   1
4   1  1  1  1  1  1  1  1  1   1
5   1  1  1  1  1  1  1  1  1   1
6   1  1  1  1  1  1  1  1  1   1
7   1  1  1  1  1  1  1  1  1   1
8   1  1  1  1  1  1  1  1  1   1
9   1  1  1  1  1  1  1  1  1   1
10  1  1  1  1  1  1  1  1  1   1
11  2  2 NA NA NA NA NA NA NA  NA
12  2  2 NA NA NA NA NA NA NA  NA