2017-10-05 68 views

回答

2

get()eval()尝试这种情况:

require(data.table) 

mean_value <- mean(dt[get(col)!=-1,get(col)],na.rm=TRUE) 

dt[get(col)==-1,eval(col):=mean_value] 

输出:

col_1 
1: 1.5 
2: 0.0 
3: 1.0 
4: 2.0 
5: 3.0 
+0

谢谢,但我想在data.table上执行它们 –

+0

如何为条目赋值!= -1 ??? –

+0

@melwin_jose - 没关系,没问题;看到上面的编辑。 – www

0

使用只有D ata.table

dt <- setDT(data.frame(col_1=c(-1,0,1,2,3))) 
col = names(dt) 
mean_value<-dt [ ! .(-1), lapply(.SD,mean), .SDcols = col,on=col] 
dt[.(-1),(col):=mean_value,on=col]