Eficiente aplicar ou mapear para vários argumentos da matriz por linha
Tenho duas matrizes às quais quero aplicar uma função, por linhas:
matrixA
GSM83009 GSM83037 GSM83002 GSM83029 GSM83041
100001_at 5.873321 5.416164 3.512227 6.064150 3.713696
100005_at 5.807870 6.810829 6.105804 6.644000 6.142413
100006_at 2.757023 4.144046 1.622930 1.831877 3.694880
matrixB
GSM82939 GSM82940 GSM82974 GSM82975
100001_at 3.673556 2.372952 3.228049 3.555816
100005_at 6.916954 6.909533 6.928252 7.003377
100006_at 4.277985 4.856986 3.670161 4.075533
Encontrei várias perguntas semelhantes, mas não muitas respostas:mapply para matrizes, Multi matriz de linhas mapply?. O código que eu tenho agora divide as matrizes por linha em listas, mas ter que dividi-lo o torna lento e não muito mais rápido que um loop for, considerando que eu tenho quase 9000 linhas em cada matriz:
scores <- mapply(t.test.stat, split(matrixA, row(matrixA)), split(matrixB, row(matrixB)))
A função em si é muito simples, basta encontrar o valor t:
t.test.stat <- function(x, y)
{
return( (mean(x) - mean(y)) / sqrt(var(x)/length(x) + var(y)/length(y)) )
}