У меня есть имя переменной, сохраненное в строковой переменной which_id
.data.table: using setkey с переменной имени столбца
W
- это таблица данных.table. Как я могу позвонить setkey
по телефону W
с номером which_id
?
Это то, что я пытался
> eval(paste('setkey(W,' , which_id , ')'))
[1] "setkey(W, customer_id_A)"
Но вызов tables()
показывает, что ключ customer_id_A
не брали.
> evalq(paste('setkey(W,' , which_id , ')'))
[1] "setkey(W, customer_id_A)"
customer_id_A
ключ все еще не принимаем.
> setkeyv(W , cols=which_id)
и
> setkeyv(W , cols=c(which_id))
-> То же самое, customer_id_A
ключ не существует.
Любые указатели?
Я не думаю, что вам понадобятся фантастические вещи 'eval'. По-моему, ваша последняя попытка с 'setkeyv' должна работать. В любом случае, как обычно я делаю evals, это 'eval (parse (text =" ... "))', тогда как вы делаете 'eval (" ... ")'. – Frank
Вызов 'parse' сделал трюк, спасибо. Мне было интересно, есть ли способ «data.table-native». – user2105469
'setkeyv (W, which_id)' работает для меня, вы можете сделать свой вопрос воспроизводимым - введите конкретные 'W' и' which_id' – eddi