我试图将几个数据表中的几个变量(每个数据表一个变量)从一个数字转换为一个因子。这是我到目前为止的代码(不工作):
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'
我错过了什么?
答案 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]
})