【发布时间】:2020-07-21 21:35:48
【问题描述】:
这假设是一项简单而微不足道的任务,但我无法让它发挥作用。我想创建一个新表,使用与另一个表相同的顺序。假设我有与过去数据相同的 5 个变量但顺序不同的当前数据。我希望当前数据具有相同的结构。我尝试使用旧数据中的列名列表并使用 R data.table 来排列变量,但是正如您从示例中看到的那样,新数据可能是列表/字符或带有空数据的 data.table。有什么建议么?谢谢!
> str(new)
Classes ‘data.table’ and 'data.frame': 2 obs. of 7 variables:
$ id: int 1 2
$ x1: int 0 1
$ x4: int 1 0
$ x5: int 1 0
$ x2: int 0 0
$ x3: int 1 0
$ x6: int 0 1
- attr(*, ".internal.selfref")=<externalptr>
> str(old)
Classes ‘data.table’ and 'data.frame': 2 obs. of 6 variables:
$ id: int 1 2
$ x1: int 1 0
$ x2: int 1 0
$ x3: int 1 0
$ x4: int 0 0
$ x5: int 1 0
- attr(*, ".internal.selfref")=<externalptr>
namelist <- list(names(old))
newlist <- new[,c(namelist)] # using data.table to order the variables
newlist <- new[,unlist(namelist)] # newlist is character instead of data.table
newlist <- new[,c(namelist)] # data.table but not expected data.
class(newlist)
[1] "data.table" "data.frame"
> str(newlist)
Classes ‘data.table’ and 'data.frame': 6 obs. of 1 variable:
$ V1: chr "id" "x1" "x2" "x3" ...
- attr(*, ".internal.selfref")=<externalptr>
【问题讨论】:
标签: r data.table