Таппи и функция с несколькими аргументами - PullRequest
0 голосов
/ 10 мая 2018

Я могу использовать функцию tapply для выполнения основных операций (например, используя данные mtcars, рассчитать средний вес по количеству цилиндров).

library(data.table)
mtcars <- data.table(mtcars)
tapply(X = mtcars[,wt], 
       INDEX = mtcars[,cyl],
       mean)

Однако я не знаю, как выполнять более сложные операции. Например. Корреляция между переменными веса и qsec по количеству цилиндров. Я пробовал что-то вроде следующего, но это не работает

tapply(X = mtcars[,.(wt, qsec)], 
       INDEX = mtcars[,cyl],
       cor.test(mtcars[,wt], mtcars[,qsec]))
Error in match.fun(FUN) :  'cor.test(mtcars[, wt], mtcars[, qsec])' is not a function, character or symbol

tapply(X = rownames(mtcars[,.(wt,qsec,cyl)]), 
       INDEX = mtcars[,cyl],
       function(r) cor.test(mtcars[r, 1],
                            mtcars[r, 2])

Есть идеи, как сделать это эффективно с помощью функции t / apply?

...