R data.table:使用带有列名变量的setkey

R data.table:使用带有列名变量的setkey,r,data.table,R,Data.table,我在字符串变量中保存了一个变量名,该变量\u id W是一个数据表。如何使用哪个id调用W上的setkey 这就是我尝试过的 > eval( paste( 'setkey(W,' , which_id , ')' ) ) [1] "setkey(W, customer_id_A )" 但是对tables()的调用表明customer\u id\u a键没有被使用 > evalq( paste( 'setkey(W,' , which_id , ')' ) ) [1] "setk

我在字符串变量
中保存了一个变量名,该变量\u id

W
是一个数据表。如何使用
哪个id
调用
W
上的
setkey

这就是我尝试过的

 > eval( paste( 'setkey(W,' , which_id , ')' ) )
[1] "setkey(W, customer_id_A )"
但是对
tables()
的调用表明
customer\u id\u a
键没有被使用

 > evalq( paste( 'setkey(W,' , which_id , ')' ) )
[1] "setkey(W, customer_id_A )"
 > setkeyv( W , cols=which_id )
customer\u id\u A
钥匙仍然没有取下

 > evalq( paste( 'setkey(W,' , which_id , ')' ) )
[1] "setkey(W, customer_id_A )"
 > setkeyv( W , cols=which_id )

-->同样,
customer\u id\u不存在一个
密钥


有什么建议吗

setkeyv
应该可以工作。以下是一个可复制的示例:

library(data.table)
W <- data.table(customer_id_A = 1:2)
which_id <- "customer_id_A"
setkeyv(W, which_id)
tables()
##      NAME NROW MB COLS          KEY          
## [1,] W       2 1  customer_id_A customer_id_A
## Total: 1MB
库(data.table)

我认为不需要那些花哨的
eval
东西。我认为,您最后一次尝试使用
setkeyv
应该会奏效。无论如何,我通常使用
eval(parse(text=“…”)
执行eval,而您使用的是
eval(“…”)
parse
调用成功了,谢谢。我想知道是否有一种“data.table native”的方式。
setkeyv(W,which_id)
对我有效,你可能想让你的问题重现-输入具体的
W
which_id