Формулировка «у меня будет 100 коэффициентов корреляции для каждого гена» вводит меня в заблуждение, поскольку каждая строка помечена как geneX, а ваше описание звучит так, будто вы пытаетесь найти коэффициент корреляции между xX в df1 и xX в df2где строки будут ваши наблюдения.Предполагая, что вы пытаетесь найти корреляцию Спирмена между одинаково помеченными строками df1
и df2
(т. Е. Корреляция между gene1 в df1 и df2), это можно сделать так:
m1 <- as.matrix(df1)
m2 <- as.matrix(df2)
res <- c()
for (i in 1:nrow(m1)) {
res <- c(res, cor(m1[i,], m2[i,], method = "spearman")))
}
Это может занять немного времени, учитывая размер data.frames.На моем компьютере требуется около 20 секунд, чтобы выполнить 100000 матриц строк.Возможно, стоит заглянуть в mclapply
, если у вас есть доступ к нескольким ядрам.