同时跳过和选择选项时获取奇怪的结果

时间:2018-09-09 03:51:46

标签: r data.table

例如,我有一个数据表文件通过以下命令保存为“ 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的顺序显示它?

谢谢。

0 个答案:

没有答案