Ho un nome di variabile salvato nella variabile stringa which_id
.data.table: utilizzando setkey con una variabile nome colonna
W
è un data.table. Come posso chiamare setkey
su W
con which_id
?
Questo è quello che ho provato
> eval(paste('setkey(W,' , which_id , ')'))
[1] "setkey(W, customer_id_A)"
Ma una chiamata a tables()
dimostra che la chiave customer_id_A
non ha preso. chiave
> evalq(paste('setkey(W,' , which_id , ')'))
[1] "setkey(W, customer_id_A)"
customer_id_A
ancora non ha preso.
> setkeyv(W , cols=which_id)
e
> setkeyv(W , cols=c(which_id))
-> stessa cosa, customer_id_A
chiave non c'è.
Eventuali suggerimenti?
Non credo che occorrerà la fantasia "eval". Il tuo ultimo tentativo, con 'setkeyv' dovrebbe funzionare, credo. Ad ogni modo, il modo in cui di solito faccio le eval è con 'eval (parse (text =" ... "))' considerando che stai facendo 'eval (" ... ")'. – Frank
La chiamata 'parse' ha fatto il trucco, grazie. Mi stavo chiedendo se esistesse un modo "data.table-native". – user2105469
'setkeyv (W, which_id)' funziona per me, potresti rendere riproducibile la tua domanda - inserire specifici 'W' e' which_id' – eddi