присвоение одинаковых номеров одинаковым строкам в матрице

У меня есть квадратная матрица размера N. Я хочу определить вектор размера N, который имеет в качестве первого компонента: все индексы строк строк матрицы, которые совпадают с первой строкой. и как второй компонент: все индексы строк строк матрицы, которые совпадают со второй строкой.

и так далее.

Я работаю над R, и я пытался сделать это в течение некоторого времени. Любая идея о том, как действовать, была бы мне очень признательна.

myMatrix <- matrix(rep(1:4, 4), ncol = 2, byrow = FALSE)

     [,1] [,2]
[1,]    1    1
[2,]    2    2
[3,]    3    3
[4,]    4    4
[5,]    1    1
[6,]    2    2
[7,]    3    3
[8,]    4    4

Что я пробовал:

res <- list(NA)
for (i in 1:nrow(myMatrix)) {
  row_selected <- myMatrix[i,]
    res[[i]] <- which(myMatrix[i,]==row_selected)
}

res


person Ajmal    schedule 29.01.2020    source источник


Ответы (1)


Версия dplyr:

# turn the matrix into a dataframe
myDf <- myMatrix %>% as.data.frame()

myDf %>% # and now get a left join of ...
    left_join(
        myDf %>% # ...the same dataframe with the index you were looking for
            distinct_all() %>%
            mutate(index = 1:nrow(.)))
person Georgery    schedule 29.01.2020
comment
Благодарю вас ! Я не привык использовать пакет dplyr. Похоже, хороший пакет для работы с фреймами данных! - person Ajmal; 29.01.2020
comment
Добро пожаловать. Дополнительную информацию о том, как использовать dplyr как часть tidyverse, можно найти на r4ds.had.co.nz Это онлайн-версия очень хорошей книги. - person Georgery; 29.01.2020