Как извлечь значения из столбцов, пока не будет достигнут ноль? (Сохранение всех значений в новом векторе) - PullRequest
0 голосов
/ 28 апреля 2019

Я хочу извлечь уникальные расстояния из моей дистанционной матрицы.Проблема в том, что иногда моя дистанционная матрица не будет симметричной, что означает, что я не могу использовать «upper / lowertri ()» для извлечения уникальных символов.Также я не могу использовать «duplicated ()», так как потенциально могу иметь мультипликаторы определенных значений, которые все уникальны (принадлежат разным выборкам).

Небольшой пример можно увидеть ниже:

WithinGroupBefore <-
         "1_1"      "2_1"        "3_1"       "4_1"
"1_1"      0       0.757009346 0.592592593 0.74137931
"2_1" 0.757009346     0        0.754545455 0.748148148
"4_1" 0.74137931   0.748148148 0.717948718       0

`

Так что для этого примера нужно извлечь 6 значений

Я приближаюсь к решению, но у меня все еще есть проблема.Решение на данный момент:

for (col in 1:ncol(WithinGroupBefore)) {
  for (row in 1:nrow(WithinGroupBefore)) {
if (WithinGroupBefore[row,col]!= 0){
ValsBefore[row,col] <- WithinGroupBefore[row,col]
}
else
break
}
}

Полученная матрица выглядит следующим образом:

ValsBefore <-
         "1_1"      "2_1"        "3_1"       "4_1"
"1_1"      NA       0.757009346 0.592592593 0.74137931
"2_1"      NA        NA            NA          NA
"4_1"      NA        NA            NA          NA

Она должна выглядеть следующим образом


ValsBefore <-
         "1_1"      "2_1"        "3_1"       "4_1"
"1_1"      NA    0.757009346   0.592592593 0.74137931
"2_1"      NA        NA        0.754545455 0.748148148
"4_1"      NA        NA        0.717948718     NA
...