In Matlab, esiste una funzione denominata spia, che visualizza la struttura di una matrice sparsa. Crea un grafico delle dimensioni della matrice in cui ogni voce con un valore diverso da zero viene colorata. Esiste una funzione equivalente in R?equivalente R della funzione spia di Matlab
5
A
risposta
8
image()
da Matrix è un'opzione.
library(Matrix)
# Example from ?Matrix:::sparseMatrix
i <- c(1,3:8); j <- c(2,9,6:10); x <- 7 * (1:7)
A <- sparseMatrix(i, j, x = x)
print(A)
##8 x 10 sparse Matrix of class "dgCMatrix"
##[1,] . 7 . . . . . . . .
##[2,] . . . . . . . . . .
##[3,] . . . . . . . . 14 .
##[4,] . . . . . 21 . . . .
##[5,] . . . . . . 28 . . .
##[6,] . . . . . . . 35 . .
##[7,] . . . . . . . . 42 .
##[8,] . . . . . . . . . 49
image(A)
per ottenere il risultato di spy()
in R, ci vuole un po 'più di lavoro.
In MATLAB (2011b):
spy()
h = gcf;
axObj = get(h, 'Children');
datObj = get(axObj, 'Children');
xdata = get(datObj,'XData');
ydata = get(datObj,'YData');
spyMat = [xdata; ydata];
csvwrite('spydat.csv',spyMat);
E in R:
library(Matrix)
spyData <- read.csv("spydat.csv")
spyMat <- t(sparseMatrix(spyData[1,],spyData[2,]))
image(spyMat)
0
una semplice funzione che duplica la funzione Matlab spia() in R, sulla base di sopra idee, è:
library(Matrix)
spy <- function(w){
# Get indices not equal to zero
inds <- which(w != 0, arr.ind=TRUE)
# Create sparse matrix with ones where not zero
A <- sparseMatrix(inds[,1], inds[,2], x = rep(1,nrow(inds)))
#
image(A))
}
Questo può essere utile per alcune applicazioni.
È possibile includere un [esempio riproducibile] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) con un oggetto campione R che si desidera stampare ? – MrFlick
Per inciso, la funzione Matlab 'spy()' include una funzione divertente che sono sicuro che non verrà replicata in R. Prova a inviare 'spy()' senza argomenti in Matlab. –
@AlexA. vedi aggiornamento. – alexforrence