2017-10-07 4 views
0

Ayons une matrice binaire/trame de données:Comment localiser des éléments spécifiques dans une matrice et les comparer avec une seconde matrice?

library("Matrix") 
df_binary <- data.frame(as.matrix(rsparsematrix(1000, 20,nnz = 800, rand.x = runif))) 
df_binary[df_binary > 0] = 1 

Maintenant, je voudrais créer un objet d'index de tous les éléments de valeur égale 1.
Comment puis-je faire cela en R?

J'ai besoin de quelque chose comme un index de ces entrées pour comparer les entrées de la matrice binaire avec les entrées d'une seconde matrice. Les deux matrices sont de la même taille - si cette information peut être importante.

+0

Peut-être quelque chose comme ça? 'which (df_binary == 1, arr.ind = TRUE)' –

+0

@MikeH: super! c'est ce que je cherchais - merci! :) – Mario

+0

Si vous utilisez réellement des matrices creuses pour stocker vos données, celles-ci stockent les indices des éléments non nuls. – user20650

Répondre

0

Si vous voulez une liste sur vous pourriez faire quelque chose le long des lignes de

list_ones <- function(df) { 
    out <- list() 

    for (col in names(df)) { 
    out[[col]] <- which(df[[col]] == 1) 
    } 

    return(out) 
} 

list_ones(df_binary)