2015-04-15 21 views
5

Trong Matlab, có một hàm có tên gián điệp, hiển thị cấu trúc của ma trận thưa thớt. Nó tạo ra một âm mưu của các kích thước của ma trận, trong đó mỗi mục có giá trị khác không được tô màu. Có một hàm tương đương trong R?R tương đương với chức năng gián điệp Matlab

+0

Bạn có thể bao gồm [ví dụ tái sản xuất] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) với đối tượng R mẫu mà bạn muốn vẽ không ? – MrFlick

+0

Ngoài ra, chức năng Matlab 'spy()' bao gồm một tính năng thú vị mà tôi chắc chắn sẽ không được sao chép trong R. Hãy thử gửi 'spy()' mà không có đối số trong Matlab. –

+0

@AlexA. xem cập nhật. – alexforrence

Trả lời

8

image() từ Matrix là một tùy chọn.

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) 

enter image description here


Để có được đầu ra của spy() trong R, phải mất công hơn một chút.

Trong 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); 

Và trong R:

library(Matrix) 
spyData <- read.csv("spydat.csv") 
spyMat <- t(sparseMatrix(spyData[1,],spyData[2,])) 
image(spyMat) 

enter image description here

0

Một chức năng đơn giản mà trùng lặp chức năng Matlab gián điệp() trong R, dựa trên trên ý tưởng, là:

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)) 
    } 

Điều này có thể hữu ích đối với một số ứng dụng.

Các vấn đề liên quan