如何将除一个列之外的所有列作为参数传递给setkey()?

时间:2015-03-31 12:33:24

标签: r data.table

我想将列名称传递给setkey(),除了一两个。我可以像下面这样轻松地做到:

setkey(df, column1, column2, column3, column6, ..., columnN, physical = TRUE)

(请注意,我们会跳过column4column5

但它要求我列出除某些特定列以外的所有列名。我可以使用colnames(df)获取列列表,但我不确定如何(1)将其传递给setkey()并且(2)从该列表中排除某些列?

1 个答案:

答案 0 :(得分:7)

您可以尝试使用setkeyv,它可以接受列名称的字符向量,然后使用简单的索引。

例如,忽略位置

的列
setkeyv(df, names(df)[-(4:5)])

或按列名称向量(与setdiff结合)忽略列

ignore <- c("column4", "column5")
setkeyv(df, setdiff(names(df), ignore))