使用从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
不起作用。