【发布时间】:2019-06-06 17:10:28
【问题描述】:
我有两个数据表,odd_data 和 even_data。我想将它们合并/合并为一个all_data,其中all_data 的奇数列是odd_data 的列,它的偶数列是even_data 的列。但是,我尝试的会引发错误。
假设odd_data 和even_data 看起来像:
odd_data
col_1 col_3
11 13
21 23
31 33
even_data
col_2 col_4
12 14
22 24
32 34
想要的结果如下所示:
all_data
col_1 col_2 col_3 col_4
11 12 13 14
21 22 23 24
31 32 33 34
我尝试过的如下:
odd_data = data.table(col_1 = c(11, 21, 31),
col_3 = c(13, 23, 33))
even_data = data.table(col_2 = c(12, 22, 32),
col_4 = c(14, 24, 34))
all_data <- data.table(matrix(nrow = nrow(odd_data), ncol = (ncol(odd_data)*2)))
# change the name of columns of all_data to match column names of odd/even_data
colnames_data <- colnames(all_data)
setnames(all_data, old=colnames_data[c(TRUE, FALSE)], new= colnames(odd_data))
setnames(all_data, old=colnames_data[c(FALSE, TRUE)], new= colnames(even_data))
all_data[, c(rep(c(TRUE, FALSE), 2))] <- odd_data
错误是
Error in `[<-.data.table`(`*tmp*`, , c(rep(c(TRUE, FALSE), 2)), value = list( :
j must be vector of column name or positions
【问题讨论】:
-
另一种可能:
d <- cbind(odd_data, even_data);setcolorder(d, c(matrix(1:ncol(d), nrow = 2, byrow = TRUE)))