Это решение примерно в 1,5 раза медленнее, чем решение ОП.
я есть две матрицы, к которым я хочу применить функцию по строкам:
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
Я нашел несколько похожих вопросов, но не так много ответов:mapply для матриц, Мульти матричный построчно mapply?, Код, который я сейчас делю, разбивает матрицы по строкам на списки, но необходимость разбивать его делает его довольно медленным и не намного быстрее, чем цикл for, учитывая, что у меня почти 9000 строк в каждой матрице:
scores <- mapply(t.test.stat, split(matrixA, row(matrixA)), split(matrixB, row(matrixB)))
Сама функция очень проста, просто найти значение t:
t.test.stat <- function(x, y)
{
return( (mean(x) - mean(y)) / sqrt(var(x)/length(x) + var(y)/length(y)) )
}