Я ищу данные о высокопроизводительных генах и делаю тип корреляционного анализа на основе байесовской статистики. Одна из вещей, которую мне нужно сделать, - найти каждую попарную комбинацию продуктов в наборе данных и найти сумму каждой результирующей строки.Сумма всех попарных продуктов ряда как двухсторонняя матрица
Так, например, для набора данных матрицы высокой пропускной Dataset
(Dataset <- structure(list(`Condition 1` = c(1L, 3L, 2L, 2L), `Condition 2` = c(2L, 1L, 7L, 2L), `Condition 3` = c(4L, 1L, 2L, 5L)), .Names = c("Condition 1", "Condition 2", "Condition 3"), class = "data.frame", row.names = c("Gene A", "Gene B", "Gene C", "Gene D")))
Condition 1 Condition 2 Condition 3
Gene A 1 2 4
Gene B 3 1 1
Gene C 2 7 2
Gene D 2 2 5
Прежде всего я хочу, чтобы умножить каждую возможную пару строк вместе, чтобы получить следующую матрицу под названием Comb
:
Condition 1 Condition 2 Condition 3
Gene A Gene A 1 4 9
Gene A Gene B 3 2 4
Gene A Gene C 2 14 8
Gene A Gene D 2 4 20
Gene B Gene B 9 1 1
Gene B Gene C 6 7 2
Gene B Gene D 6 2 5
Gene C Gene C 4 49 4
Gene C Gene D 4 14 10
Gene D Gene D 4 4 25
После I хотите найти суммы строк для каждого продукта и получить суммы в виде матрицы (которую я назову CombSums
):
Gene A Gene B Gene C Gene D
Gene A NA 10 24 26
Gene B 10 NA 15 13
Gene C 24 15 NA 28
Gene D 26 13 28 NA
Когда я попытался сделать это, лучшее, что я мог придумать было
combs <- combn(seq_len(nrow(Dataset)), 2)
Comb <- Dataset[combs[1,], ] * Dataset[combs[2,], ]
rownames(Comb) <- apply(combn(rownames(Comb), 2), 2, paste, collapse = " ")
CombSums <- rowSums(Comb)
Какой бы дает мне суммы в виде списка, например, как показано ниже:
[1,]
Gene A Gene B 10
Gene A Gene C 24
Gene A Gene D 26
Gene B Gene C 15
Gene B Gene D 13
Gene C Gene D 28
К сожалению, я хотите, чтобы это как двухсторонняя матрица, а не список, так что это не работает, поэтому, если кто-нибудь может предложить способ получить суммы в виде матрицы, это будет большой помощью.
Я считаю, что значения (1, 2) и (2, 1) должны быть 9 (3 + 2 + 4), а не 10. – josliber
В матрице 'Comb' (1,3) должно быть 16 не 9 –