以编程方式为data.table中的列分配动态列名称

时间:2014-02-14 17:11:32

标签: r 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]

1 个答案:

答案 0 :(得分: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)))]