У меня есть небольшая проблема, и я не уверен, как исправить ошибку.Double For Loop и вычислять средние значения в R
В принципе, у меня есть два столбца, и я хочу использовать Double For Loop для вычисления средних значений между каждым числом в обоих столбцах, поэтому он приводит к вектору средних значений. Чтобы прояснить, применить и средние функции, это не самая лучшая функция, потому что мне нужна только половина из возможных комбинаций для получения средних значений. Например:
Col1<-c(1,2,3,4,5)
Col2<-c(1,2,3,4,5)
Q1<-data.frame(cbind(Col1, Col2))
Q1$mean<-0
for (i in 1:length(Q1$Col1)) {
for (j in i+1:length(Q1$Col2)) {
Q1$mean[i]<-(Q1$Col1[i]+Q1$Col2[j])/2
}
}
В принципе, для каждого номера в Q1 $ Col1, я хочу это усреднить с Q1 $ Col2. Причина, по которой я хочу использовать цикл double for, заключается в устранении дубликатов. Это матрица версия для обеспечения визуализации:
1.0 1.5 2.0 2.5 3.0
1.5 2.0 2.5 3.0 3.5
2.0 2.5 3.0 3.5 4.0
2.5 3.0 3.5 4.0 4.5
3.0 3.5 4.0 4.5 5.0
Здесь каждая строка представляет собой число от Q1 $ Col1 и каждый столбец представляет собой число от Q1 $ Col2. Однако обратите внимание, что существует избыточность по обе стороны диагональной матрицы. Поэтому, используя Double For Loop, я устраняю избыточность, чтобы получить средние значения уникальной комбинации случаев. Используя матрицу выше, она должна выглядеть следующим образом:
1.0 1.5 2.0 2.5 3.0
2.0 2.5 3.0 3.5
3.0 3.5 4.0
4.0 4.5
5.0
Ваш пример не воспроизводится, потому что у вас нет двух столбцов в 'Q1', или вы можете выполнять такие операции, как' Q1 $ Col1' на матрице. Какой здесь результат? –
@DavidArenburg Я сделал корректировки. В принципе, для каждого номера в Q1 $ Col1, я хочу, чтобы он усреднял его с Q1 $ Col2. Причина, по которой я хочу использовать цикл double for, заключается в устранении дубликатов. –
Я озадачен тем, каков ожидаемый результат этого алгоритма, но, вероятно, он имеет ошибку: 'i + 1: length (Q1 $ Col2)' сначала производит последовательность от 1 до 'length (Q1 $ Col2)', а затем добавляет 1 к каждому элементу вектора. Возможно, OP означало последовательность от 'i + 1' до' length (Q1 $ Col2) ', которую можно получить, например, с помощью (i + 1): length (Q1 $ Col2)'. –