Как найти все столбцы, равные данному столбцу? - PullRequest
0 голосов
/ 21 января 2019

Учитывая матрицу и определенный индекс столбца, как найти все столбцы, равные этому столбцу (или не более t векторов столбцов, равных этому столбцу).

Например:

m=matrix(data=c(2,2,2,2,3,0,2,2), ncol = 4)

равные столбцы 1 & 2 & 4

Если столбец index=1 Я могу получить 2 & 4

Если t=1, я получу только второй столбец 2 или столбец 4-th.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Учитывая, что ncol = 4, вы можете использовать команду apply и какую функцию:

m <- matrix(data=c(2,2,2,2,3,0,2,2), ncol=4)
index <- 1

x <- apply(m,2,FUN=function(x){all(x==m[,index])}) %>% which()
x
[1] 1 2 4

Но тогда включается столбец индекса.Его можно легко удалить с помощью

x[x!=index]
[1] 2 4
0 голосов
/ 21 января 2019

Я предполагаю, что у вас есть опечатка с тем, как вы создаете примерную матрицу.Вот простой способ получить нужные вам индексы.

m=matrix(data=c(2,2,2,2,3,0,2,2), ncol=4)

equal_cols = function(m, col_index){
    out = NULL
    for (i in (1:NCOL(m))[-col_index]){
        if (all(m[,col_index] == m[,i]))
            out = c(out, i)
        }
    return (out)
    }

equal_cols(m, 1)
# 2 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...