Я хочу обобщить несколько переменных в data.table, выводить в широком формате, выводить, возможно, как список на переменную. Поскольку несколько других подходов не сработало, я попытался сделать внешнюю латентность, указав имена переменных как символьные векторы. Я хотел передать их, используя = FALSE.data.table: Использование с = False и преобразование функции/итоговой функции?
carsx=as.data.table(cars)
lapply(list(speed="speed",dist= "dist"), #error object 'ansvals' not found
function(x) carsx[,list(mean(x), min(x), max(x)), with=FALSE ])
Поскольку это не сработало, я попробовал более простой подход без лаппли.
carsx[,list(mean("speed"), min("speed"), max("speed")), with=FALSE ] #error object 'ansvals' not found
Это также не работает. Есть ли способ сделать что-то подобное? Это поведение «с» нужно? (Я знаю, что ?data.table
упоминает лишь выбрать столбцы, но в моем случае это было бы полезно, чтобы иметь возможность трансформировать их, а)
Когда с = FALSE, J представляет собой вектор имен или позиций выберите, аналогично data.frame. with = FALSE часто полезно в data.table для динамического выбора столбцов.
EDIT Моя цель - получить резюме по группе в широком формате для разных переменных. Я попытался распространить следующее, которое работает только для одной переменной, для списка переменных.
carsx[,list(mean(speed), min(speed), max(speed)) ,by=(dist>50)
С сожалением СО не позвольте мне опубликовать мой другой вопрос. Там я описал, что я хочу, выходной похож на:
lapply(list(speed="speed",dist= "dist"),
function(x) do.call("as.data.frame", aggregate(cars[,x], list(class=cars$dist>50), FUN=summary)))
Ожидаемый результат будет что-то вроде:
$speed
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25
$dist
V1 V2 V3
1: FALSE 12.96970 4 20
2: TRUE 20.11765 14 25
Я хочу, чтобы получить суммарную статистику в широком формате, возможно, в списке на (сгруппированных) переменной. Для этого я попробовал внешний лап, и поэтому ответ Свенса тоже не подходит для меня ... – Julian
Я группирую (dist> 50) – Julian