Я хочу обрабатывать столбцы по таким критериям, как сопоставление класса или общего шаблона через grep
.
Моя первая попытка не сработала:
require(data.table)
test.table <- data.table(a=1:10,ab=1:10,b=101:110)
##this does not work and hangs on my machine
test.table[,lapply(names(test.table)[grep("a",names(test.table))], get)]
Рикардо Сапорта отмечает в ответе, что вы можете использовать эту конструкцию, но вы должны обернуть get
в фиктивную функцию:
##this works
test.table[,lapply(names(test.table)[grep("a",names(test.table))], function(x) get(x))]
Зачем вам анонимная функция?
(Предпочтительный/более чистый метод — через .SDcols
:)
test.table[,.SD,.SDcols=grep("a",names(test.table))]
test.table[, grep("a", names(test.table), with = FALSE]
get
— это стандартный метод преобразования символьного значения в языковой объект. - person IRTFM   schedule 05.08.2013grep
имеет параметрvalue=TRUE
. Можно было просто написать:lapply(grep("a", names(test.table), value=TRUE), get)
- person Arun   schedule 06.08.2013