Я гуглю этот ответ в течение нескольких часов. Многие люди задавали подобные вопросы, но я не нашел ни достаточно простого вопроса, ни однозначного ответа. Вот мой подход:
Предположим, что я хочу создать простую группу в data.table
:
library(data.table)
mtcars = data.table(mtcars)
mtcars[,sum(mpg), gear]
# Here are the results
# gear V1
#1: 4 294.4
#2: 3 241.6
#3: 5 106.9
Однако, если я использую для этого определенную пользователем функцию:
zz = function(data, var, group){
return(data[,sum(var), group])
}
zz(mtcars, mpg, gear)
Я получил сообщение об ошибке:
Ошибка в eval (bysub, parent.frame (), parent.frame ()): объект 'gear' не найден
Я пробовал substitute
, eval
, quote
и другие решения, но ни одно из них не работает. Интересно, кто-нибудь мог бы дать более простое решение и объяснение этому.
Спасибо и счастливого Хэллоуина!