Я хочу преобразовать подмножество data.table cols в новый класс. Здесь есть популярный вопрос (Преобразование классов столбцов в data.table), но ответ создает новый объект, а не работает на стартовом объекте.
Возьмем этот пример:
dat <- data.frame(ID=c(rep("A", 5), rep("B",5)), Quarter=c(1:5, 1:5), value=rnorm(10))
cols <- c('ID', 'Quarter')
Как лучше всего преобразовать только столбцы cols
в (например) фактор? В нормальном data.frame вы можете сделать это:
dat[, cols] <- lapply(dat[, cols], factor)
но это не работает для таблицы data.table, и это также не работает
dat[, .SD := lapply(.SD, factor), .SDcols = cols]
Комментарий в связанном вопросе от Matt Dowle (с декабря 2013 года) предлагает следующее, которое прекрасно работает, но кажется немного менее элегантным.
for (j in cols) set(dat, j = j, value = factor(dat[[j]]))
Есть ли в настоящее время лучший ответ data.table(т.е. более короткий + не генерирует переменную счетчика), или я должен просто использовать выше + rm(j)
?