хочу удалить колонки, название которых хранится в векторе.
first_cols <- c("Sepal.Length", "Petal.Length")
iris_dt <- as.data.table(iris)
Я помню, что у дататейбла есть вот это вот .. (как нечто близкое !! в тайди, если я правильно понимаю). Я могу вытащить нужные колонки:
iris_dt[, ..first_cols]
Но все попытки присвоить NULL этим колонкам оканчиваются провалом
> iris_dt[, (first_cols) := NULL] > names(iris_dt) [1] "Sepal.Width" "Petal.Width" "Species"
Все NSE в data.table сводится к упомянутым .., () и стандартной функции get(). В особо запущенных случаях можно использовать стандартные eval() и parse(), как описано в https://stackoverflow.com/questions/12391950/select-assign-to-data-table-when-variable-names-are-stored-in-a-character-vect/12392269#12392269 Есть еще вот такое обсуждение https://stackoverflow.com/questions/24833247/how-can-one-work-fully-generically-in-data-table-in-r-with-column-names-in-varia, полезное прежде всего коллекцией ссылок в начале
Спасибо, очень полезно!
Обсуждают сегодня