提供数据表和变量名称

时间:2015-07-29 18:12:01

标签: r data.table lapply

我试图将几个数据表中的几个变量(每个数据表一个变量)从一个数字转换为一个因子。这是我到目前为止的代码(不工作):

DT = data.table(x=c(1,2,3,4), y = c(8,9,10,11), n = c(1,0,1,0))
DT
   x  y n
1: 1  8 a
2: 2  9 a
3: 3 10 b
4: 4 11 b

var_list = list("x","y")

lapply(var_list, function(i) {
  name1 = paste("factor", i, sep="_")
  DT[, num := seq_len(.N), by = "n"]
  dataname = paste("DT",i,sep="_")
  assign(dataname, data.frame(subset(DT,num==1)),pos = .GlobalEnv)
  dataname = data.table(dataname)
  dataname[, name1 := as.factor(get(i)), with = FALSE]
})  
  

get(i)出错:找不到对象'x'

我错过了什么?

1 个答案:

答案 0 :(得分:0)

lapply(var_list, function(i) {
  name1 = paste("factor", i, sep="_")
  DT[, num := seq_len(.N), by = "n"]
  dataname = paste("DT",i,sep="_")

我试图将dataname转换为另一行中的data.table,但它正在转换为1x1 data.table。而是转换为分配行中的data.table:

  assign(dataname, data.table(subset(DT,num==1)),pos = .GlobalEnv)

然后使用[]

之外的get()函数引用dataname data.table
  get(dataname)[, name1 := as.factor(get(i)), with = FALSE]
})