Как найти все сравнения из большого набора данных - PullRequest
0 голосов
/ 26 июня 2019

У меня большой набор данных из эксперимента. В наборе данных около 25000 спектров. Я хочу посмотреть, есть ли какая-либо общая черта во всем спектре. Существует встроенная функция для сравнения спектров между двумя конкретными спектрами. Но я хочу разработать цикл, который дает мне результаты всех возможных сравнений. Наконец, вы хотите создать data.frame или список вместе с идентификатором сравниваемого номера спектра.

Я написал простой цикл, который дает мне сравнение спектра 1 и 2, 2 и 3, 3 и 4 и 4 и 5.

for (i in 1:4){
   comparison <- compareSpectra(raw_25kda[[i]], raw_25kda[[i+1]], fun = "common")
   print(as.list(comparison))
}

Из цикла у меня есть список из 4 числа 2,5,6,2 соответственно для четырех сравнений 1 и 2, 2 и 3, 3 и 4 и 4 и 5 сравнений.

Первое сравнение между 1 и 2, и есть 2 общих черты. Есть ли способ, которым я могу явно напечатать, что 1 и 2 сравниваются, и между ними есть 2 общих черты?

Я также хочу сравнить 1 и 3, 1 и 4, 2 и 4, 3 и 4.

Когда я вспоминаю сравнение позже в другом блоке R, который дает мне только одно значение, такое как последнее значение 2. Как я могу сохранить список в цикле для будущего анализа? Любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 июня 2019

У меня нет данных или пакетов, которые вы используете, так что это может быть немного не так, но, надеюсь, следует указать в правильном направлении.

Вот все комбинации из 5 наборов данных:

my_data_sets <- 1:5
combos <- combn(my_data_sets, m = 2, simplify = T)
combos
#     [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#[1,]    1    1    1    1    2    2    2    3    3     4
#[2,]    2    3    4    5    3    4    5    4    5     5

Их 10. Теперь мы можем инициализировать список с десятью элементами для хранения наших результатов.

combo_len = dim(combos)[2]
output <- vector("list", combo_len)
for (i in combo_len) {
  set1 = combos[1, i]
  set2 = combos[2, i]
  output[[i]] <- compareSpectra(raw_25kda[[set1]], raw_25kda[[set2]], fun = "common")
}

Объект output теперь должен иметь десять элементов, каждый из которых представляет ихсоответствующая комбинация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...