例如,我有一个数据表文件通过以下命令保存为“ t.csv”:
dt <- data.table(A = letters[rep(1:3, 2)],
X = 1:6,
B = letters[rep(2:4, 2)],
Y = 6:1)
fwrite(dt,"t.csv", row.name=F, quote=T)
如果没有跳过设置,则可以通过“ select =“”提供列名的向量来以任何顺序读取某些列。但是,如果需要跳过某些行,则不能使用列名进行选择,例如,next命令将生成错误:
dt <- fread("t.csv", skip = 1, select = "X")
# Error in ans[[1L]] : subscript out of bounds # In addition: Warning message: # In fread("t.csv", skip = 1, select = "X") : # Column name 'X' not found in column name header (case sensitive), skipping.
似乎fread跳过一行后,它也会丢失所有列名,是真的吗?无论如何,在这种情况下,我必须将列索引用于选择列。但是,这是一种奇怪的情况:如果列索引不是升序,则结果列顺序被弄乱了
dt <- fread("t.csv", skip = 2, select = c(3, 1, 2))
V2 V3 V1
1: 2 c b
2: 3 d c
3: 4 b a
4: 5 c b
5: 6 d c
如何理解?
另一个问题是关于数据表的二级索引。 setindex(dt, V3)
之后,如何按V3的顺序显示它?
谢谢。