2013-05-02 12 views
16

変数名は変数which_idに保存されています。data.table:カラム名変数にsetkeyを使用

Wはdata.tableです。 Wsetkeywhich_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キーがありません。

任意のポインタ?

+1

私はファンシーな「評価」のものが必要と思われます。あなたの最後の試みは 'setkeyv'でうまくいくはずです。とにかく、通常私がevalsを行う方法は 'eval(" ... ")'を実行している間は 'eval(parse(text =" ... "))'で行います。 – Frank

+0

'parse'呼び出しがトリックでした。ありがとうございました。私は 'data.table-native'の方法があるのだろうかと思っていました。 – user2105469

+1

'setkeyv(W、which_id)'が私のために働いています。あなたの質問を再現性のあるものにしたいと思うかもしれません - 特定の 'W'と' which_id'を入れてください。 – eddi

答えて

19

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 
+0

あなたは正しいです。 – user2105469

関連する問題