R Datatable - 使用string作为变量

时间:2016-09-27 08:28:10

标签: r data.table attr

使用从SPSS导入的数据时,我需要访问某些变量的value.labels属性。

我得到的这些变量的名称是字符串。将变量名称(作为字符串)传递给我找到的attr的唯一方法是通过get(),但它非常慢。 情况非常简单,因此可能有更好的方法。

这个例子是人为的,但是大小(变量的数量)与我在实际中使用的相似。在实际情况中我也需要data.table。

library(data.table)

id <- c(1:4000) 
x <- sample(1:3, 4000, replace=T)
dv<-c(id,x)
df<-data.frame(t(dv))
dt<-data.table(df)

attr(dt$X1,"value.labels")<-c("first","second","third")


#direct approach is fast
pm<-proc.time()
attr(dt[,X1],"value.labels")
proc.time() - pm

   user  system elapsed 
   0.00    0.04    0.03 

#using variable name as a string is slow
pm<-proc.time()
attr(dt[,get("X1")],"value.labels")
proc.time() - pm

   user  system elapsed 
   0.85    0.03    0.89 

get()解决方案速度非常慢,但确实有效。

attr(dt[,"X1", with=FALSE],"value.labels")
NULL

attr(dt[,match("X1",names(dt)),with=FALSE],"value.labels")
NULL

不起作用。

0 个答案:

没有答案