присвоение одинакового номера одинаковым строкам в матрице - PullRequest
0 голосов
/ 29 января 2020

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

1 Ответ

1 голос
/ 29 января 2020

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(.)))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...