Я пытаюсь манипулировать несколькими 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, но более опытен с некоторыми другими языками, так что это может быть глупый вопрос.