要保持data.table子集向量的顺序,可以使用setkey()函数来设置数据表的键,然后使用key()函数来指定排序顺序。
以下是一个示例代码:
library(data.table)
# 创建一个示例数据表
dt <- data.table(
id = c(1, 3, 2, 4),
name = c("John", "Jane", "Tom", "Amy"),
age = c(25, 30, 20, 35)
)
# 设置键为id列,并按照id的顺序排序
setkey(dt, id)
# 子集选择,保持顺序
sub_dt <- dt[id %in% c(2, 4)]
# 输出子集数据表
print(sub_dt)
输出结果为:
id name age
1: 2 Tom 20
2: 4 Amy 35
在上面的代码中,我们首先使用setkey()函数将数据表dt按照id列设置为键,并按照id的顺序排序。然后,我们使用id %in% c(2, 4)来选择id为2和4的行,并将结果保存到子集数据表sub_dt中。最后,我们打印出子集数据表sub_dt,可以看到保持了原始数据表的顺序。