2014-02-14 29 views
1

我想要做的是這樣的:在data.table編程分配列與動態列名

DT[,diffs:=c(NA, diff(SPY_mid))] 

但在腳本中,而無需事先知道

DT[,diffs:=c(NA, diff(paste('SPY', '_mid', sep='')))] 

沒有按似乎沒有用。無論是做這個的:

DT[,'diffs':=c(NA, diff(paste('SPY', '_mid', sep=''))), with=F] 

回答

6

你可能在找這個(注意括號):

dt = data.table(a = 1:5) 
newcol = 'b' 
dt[, (newcol) := c(NA, diff(a))] 
dt 
# a b 
#1: 1 NA 
#2: 2 1 
#3: 3 1 
#4: 4 1 
#5: 5 1 

或者,也許這樣的:

oldcol = 'a' 
dt[, (newcol) := c(NA, diff(get(oldcol)))]