我试图以类似的方式操作一些data.tables,并希望编写一个函数来实现这一目标.我想传入一个参数,其中包含将执行操作的列列表.当列的向量声明是:=运算符的左侧时,这可以正常工作,但如果先前声明(或传递给函数)则不行.以下代码显示了该问题.
dt = data.table(a = letters, b = 1:2, c=1:13)
colsToDelete = c('b', 'c')
dt[,colsToDelete := NULL] # doesn't work but I don't understand why not.
dt[,c('b', 'c') := NULL] # works fine, but doesn't allow passing in of columns
Run Code Online (Sandbox Code Playgroud)
错误是"添加新列'colsToDelete'然后分配NULL(删除它)." 很明显,它将'colsToDelete'解释为新的列名.
沿着这些方向做某事时会出现同样的问题
dt[, colNames := lapply(.SD, adjustValue, y=factor), .SDcols = colNames]
Run Code Online (Sandbox Code Playgroud)
我是R的新手,但对其他语言更有经验,所以这可能是一个愚蠢的问题.