【发布时间】:2019-11-25 18:00:17
【问题描述】:
我一直在尝试获取两个 data.table,对它们进行 cbind,然后重新对列进行排序,以便第一个 data.table 的第一列紧挨着第一个 data.table 的第一列,依此类推。
我使用 Map 函数来提出联锁索引,但是当我将值传递给 j 时,它只是将索引作为向量返回。以下是我所说的一些例子:
m <- data.table(a = 1:10, b = letters[1:10], c = LETTERS[1:10], d = rnorm(10))
m[, c(1, 3, 2, 4)] # works
m[, unlist(list(1, 3, 2, 4))] # doesn't work
m[, c(unlist(list(1, 3, 2, 4)))] # works
m[, c(unlist(Map(c, c(1, 2), c(3, 4))))] # doesn't work
【问题讨论】:
-
使用
setcolorder函数,例如setcolorder(m, unlist(list(1, 3, 2, 4))),或使用with = FALSE,例如m[, unlist(list(1, 3, 2, 4)), with = FALSE] -
附注交错两个向量的更短方法是
c(rbind(c(1, 2), c(3, 4))) -
试试
with=FALSE
标签: r data.table