присвояване на същия номер на подобни редове в матрица

Имам квадратна матрица с размерност 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