Sorry. I erred somewhere in making the original M1 matrix using sampling call in the spMatrix function. I still don't really understand why the matrix values do not match exactly with M1@x. If I regenerate M1 this way...
> i=c(1:5,5:1) > j=c(1:5,2:6) > x=rnorm(10,2) > M1 <- spMatrix(nrow=5,ncol=6,i=i,j=j,x=x) > M1 5 x 6 sparse Matrix of class "dgTMatrix" [1,] 1.876193 . . . . 2.040574 [2,] . 1.032214 . . 1.786480 . [3,] . . 1.716743 3.711979 . . [4,] . . 2.534000 3.302921 . . [5,] . 1.084763 . . 1.511992 . Then the str(M1) makes sense and all the methods described so far appears to work as expected. > M1@x [1] 1.876193 1.032214 1.716743 3.302921 1.511992 1.084763 2.534000 3.711979 [9] 1.786480 2.040574 The solution is still not apparent to me though without doing a lapply. spVecs <- lapply(1:nrow(M1), function(a) { nnz <- nnzero(M1[a,]) tmp <- as(M1[a,],'sparseVector') tmp@x <- tmp@x[sample(nnz,nnz)] return(tmp) }) To get back a sparse matrix...I can do this. x <- do.call(c,lapply(spVecs,function(v) v@x)) j= do.call(c,lapply(spVecs,function(v) v@i)) i = do.call(c,lapply(1:length(spVecs), function(n) rep(n,length(spVecs[[n]]@i)))) permM1 <- sparseMatrix(i=i,j=j,x=x) > permM1 5 x 6 sparse Matrix of class "dgCMatrix" [1,] 2.040574 . . . . 1.876193 [2,] . 1.786480 . . 1.032214 . [3,] . . 1.716743 3.711979 . . [4,] . . 2.534000 3.302921 . . [5,] . 1.511992 . . 1.084763 . In this case, rows 3 and 4 remained unchanged. But now this takes a really long time for a large sparse matrix. Thanks for any advice. -- View this message in context: http://r.789695.n4.nabble.com/column-permutation-of-sparse-matrix-tp4216726p4223079.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.