data.table: using setkey with a column name variable

I have a variable name saved into the string variable which_id.

W is a data.table. How do I call setkey on W with which_id ?

This is what I've tried

 > eval( paste( 'setkey(W,' , which_id , ')' ) )
[1] "setkey(W, customer_id_A )"

But a call to tables() shows that the customer_id_A key didn't take.

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

customer_id_A key still didn't take.

 > setkeyv( W , cols=which_id )

and

 > setkeyv( W , cols=c( which_id ) )

--> same thing, customer_id_A key isn't there.

Any pointers? Thanks.

Answers


setkeyv should work. Here is a reproducible example:

> library(data.table)
data.table 1.8.8  For help type: help("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

Need Your Help

Confused on how to get out of infinite while loop with no sentinal value

c++ visual-studio-2010

I can only use a while Loop. I am to prompt the user for their first and last name and the number of exams taken. Then i am to use a while loop to sum and average the exams. Noting that each test s...

About UNIX Resources Network

Original, collect and organize Developers related documents, information and materials, contains jQuery, Html, CSS, MySQL, .NET, ASP.NET, SQL, objective-c, iPhone, Ruby on Rails, C, SQL Server, Ruby, Arrays, Regex, ASP.NET MVC, WPF, XML, Ajax, DataBase, and so on.