/ / Remplir la matrice creuse avec sapply dans R - r, sapply

Remplir la matrice clairsemée avec sapply dans R - r, sapply

Dire X est une grande matrice creuse, où chaque ligne n'a qu'une entrée différente de zéro. J'ai un vecteur pos avec les emplacements des colonnes où cet élément non nul va. Pour remplir la matrice, la boucle suivante fonctionne:

for (row in 1:nrow(X)) {
X[row, pos[row]] <- 1
}

Est-il possible de le faire sans boucle, en utilisant peut-être sapply?

Réponses:

3 pour la réponse № 1

Vous pouvez jeter un oeil à la sparseMatrix fonction de Matrix:

> library(Matrix)
> (pos = sample(1:7))
[1] 5 1 6 4 7 2 3
> sparseMatrix(1:7, pos)
7 x 7 sparse Matrix of class "ngCMatrix"

[1,] . . . . | . .
[2,] | . . . . . .
[3,] . . . . . | .
[4,] . . . | . . .
[5,] . . . . . . |
[6,] . | . . . . .
[7,] . . | . . . .

Les fonctions de package Matrix prennent un certain temps, mais elles offrent de nombreux avantages lorsqu’on travaille avec des matrices éparses.