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

LA_*_*LA_ 2 r data.table

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

setkey(df, column1, column2, column3, column6, ..., columnN, physical = TRUE)
Run Code Online (Sandbox Code Playgroud)

(请注意column4column5跳过).

但是它要求我列出除某些特定列之外的所有列名.我可以获取列的列表colnames(df),但我不知道如何(1)将其传递给setkey()(2)从列表中排除某些列?

Dav*_*urg 7

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

例如,按位置忽略列

setkeyv(df, names(df)[-(4:5)])
Run Code Online (Sandbox Code Playgroud)

或者通过列名称向量忽略列(结合setdiff)

ignore <- c("column4", "column5")
setkeyv(df, setdiff(names(df), ignore))
Run Code Online (Sandbox Code Playgroud)