On Jun 21, 2011, at 11:44 AM, Patrick Breheny wrote:

On 06/21/2011 09:48 AM, davefrederick wrote:
Hi, I have a 500x 53380 sparse matrix and I am trying to dichotomize it. Under sna package I have found event2dichot yet it doesnt recognize sparse matrix and requires adjacency matrix or array. I tried to run a simple loop
code

for (i in 1:500)
for (j in 1:53380)
if (matrix[i,j]>0) matrix[i,j]=1

The code you are running does not require a loop:

> A <- cbind(c(1,0),c(0,2))
> A
    [,1] [,2]
[1,]    1    0
[2,]    0    2
> A[A>0] <- 1
> A
    [,1] [,2]
[1,]    1    0
[2,]    0    1

However, for large sparse matrices, this and other operations will be faster if the matrix is explicitly stored as a sparse matrix, as implemented in the 'Matrix' package.

require(Matrix)
 M <- Matrix(0, 10,10)  # empty sparse matrix
 M[1:10, 1] <- 1
 M[1:10, 2] <- 2
 M[1:10, 3] <- -3

 M[M > 0] <- 1

> M
10 x 10 sparse Matrix of class "dgCMatrix"

 [1,] 1 1 -3 . . . . . . .
 [2,] 1 1 -3 . . . . . . .
 [3,] 1 1 -3 . . . . . . .
 [4,] 1 1 -3 . . . . . . .
 [5,] 1 1 -3 . . . . . . .
 [6,] 1 1 -3 . . . . . . .
 [7,] 1 1 -3 . . . . . . .
 [8,] 1 1 -3 . . . . . . .
 [9,] 1 1 -3 . . . . . . .
[10,] 1 1 -3 . . . . . . .

> M2 <- as.matrix(M)

> M2
      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
 [1,]    1    1   -3    0    0    0    0    0    0     0
 [2,]    1    1   -3    0    0    0    0    0    0     0
 [3,]    1    1   -3    0    0    0    0    0    0     0
 [4,]    1    1   -3    0    0    0    0    0    0     0
 [5,]    1    1   -3    0    0    0    0    0    0     0
 [6,]    1    1   -3    0    0    0    0    0    0     0
 [7,]    1    1   -3    0    0    0    0    0    0     0
 [8,]    1    1   -3    0    0    0    0    0    0     0
 [9,]    1    1   -3    0    0    0    0    0    0     0
[10,]    1    1   -3    0    0    0    0    0    0     0

There might have been a one or two second pause while the last command was executing for this test:

> M <- Matrix(0, 500, 53380 )
> M[1:10, 1] <- 1
> M[1:10, 2] <- 2
> M[1:10, 3] <- -3
> M[M > 0] <- 1
> M2 <- as.matrix(M)

--
David.


--
Patrick Breheny
Assistant Professor
Department of Biostatistics
Department of Statistics
University of Kentucky

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

David Winsemius, MD
West Hartford, CT

______________________________________________
R-help@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.

Reply via email to