【发布时间】:2014-08-26 17:45:47
【问题描述】:
我正在尝试以类似的方式操作多个 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
错误是“添加新列 'colsToDelete' 然后分配 NULL(删除它)。”很明显,它将“colsToDelete”解释为一个新的列名。
按照这些思路进行操作时会出现同样的问题
dt[, colNames := lapply(.SD, adjustValue, y=factor), .SDcols = colNames]
我是 R 新手,但对其他一些语言更有经验,所以这可能是一个愚蠢的问题。
【问题讨论】:
标签: r data.table