Hi All, I have a 8000*8000 matrix and I want to print out a file with the row name, column name and the value for those point with values satisfying a condition. I tried using a for loop, however, it took me forever to get the result. Is there a fast way to do this? Thanks! Bing --------------------------------- 1060 Commerce Park Oak Ridge National Laboratory P.O. Box 2008, MS 6480 Oak Ridge, TN 37831-6480 Phone: 865-241-0761 Email: zhangb at ornl.gov
On Tue, 12 Aug 2003, Bing Zhang wrote:> Hi All, > > I have a 8000*8000 matrix and I want to print out a file with the row name, > column name and the value for those point with values satisfying a condition. > I tried using a for loop, however, it took me forever to get the result. Is > there a fast way to do this? Thanks! >> aa <- matrix(rnorm(1000000), 1000, 1000) > found <- which(aa > 4, arr.ind=TRUE) > cbind(found, aa[found])(for your condition) should do it. My matrix is a bit smaller though, but it goes quite fast. If you need the row/col names, you'll want to make some other structure than the cbind (as a data frame with character columns).> Bing > > --------------------------------- > 1060 Commerce Park > Oak Ridge National Laboratory > P.O. Box 2008, MS 6480 > Oak Ridge, TN 37831-6480 > Phone: 865-241-0761 > Email: zhangb at ornl.gov > > ______________________________________________ > R-help at stat.math.ethz.ch mailing list > https://www.stat.math.ethz.ch/mailman/listinfo/r-help >-- Roger Bivand Economic Geography Section, Department of Economics, Norwegian School of Economics and Business Administration, Breiviksveien 40, N-5045 Bergen, Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93 e-mail: Roger.Bivand at nhh.no
I would use which(), then subscript the row names and column names with appropriate columns from which(). See help("which"), help("Extract"), help("rownames"). - tom blackwell - u michigan medical school - ann arbor - On Tue, 12 Aug 2003, Bing Zhang wrote:> I have a 8000*8000 matrix and I want to print out a file with the row name, > column name and the value for those point with values satisfying a condition. > I tried using a for loop, however, it took me forever to get the result. Is > there a fast way to do this? Thanks! > > Bing > --------------------------------- > 1060 Commerce Park > Oak Ridge National Laboratory > P.O. Box 2008, MS 6480 > Oak Ridge, TN 37831-6480 > Phone: 865-241-0761 > Email: zhangb at ornl.gov
Try with write.matrix (MASS pkg)... good luck A.S. ---------------------------- Alessandro Semeria Models and Simulations Laboratory Montecatini Environmental Research Center (Edison Group), Via Ciro Menotti 48, 48023 Marina di Ravenna (RA), Italy Tel. +39 544 536811 Fax. +39 544 538663 E-mail: alessandro.semeria@cramont.it [[alternative HTML version deleted]]
Thanks. I made it. For those who have the same problem, here is my data:> corr2100002_at 100003_at 100004_at 100005_at 100002_at 1.00000000 -0.08452797 -0.2977039 -0.10522948 100003_at -0.08452797 1.00000000 -0.2955658 0.02353673 100004_at -0.29770388 -0.29556577 1.0000000 0.20758195 100005_at -0.10522948 0.02353673 0.2075820 1.00000000 100006_at -0.20549685 0.15661089 -0.2132440 -0.48680542 and here is how I did it:> found2<-which(abs(corr2)>0.8, arr.ind=TRUE) > cbind(rownames(corr2)[found2[,1]],colnames(corr2)[found2[,2]],corr2[found2])[,1] [,2] [,3] [1,] "100002_at" "100002_at" "1" [2,] "100003_at" "100003_at" "1" [3,] "100004_at" "100004_at" "1" [4,] "100005_at" "100005_at" "1">===== Original Message From Roger.Bivand at nhh.no ====>On Tue, 12 Aug 2003, Bing Zhang wrote: > >> Hi All, >> >> I have a 8000*8000 matrix and I want to print out a file with the row name, >> column name and the value for those point with values satisfying acondition.>> I tried using a for loop, however, it took me forever to get the result. Is >> there a fast way to do this? Thanks! >> > >> aa <- matrix(rnorm(1000000), 1000, 1000) >> found <- which(aa > 4, arr.ind=TRUE) >> cbind(found, aa[found]) > >(for your condition) should do it. My matrix is a bit smaller though, but >it goes quite fast. If you need the row/col names, you'll want to make >some other structure than the cbind (as a data frame with character >columns). > >> Bing >> >> --------------------------------- >> 1060 Commerce Park >> Oak Ridge National Laboratory >> P.O. Box 2008, MS 6480 >> Oak Ridge, TN 37831-6480 >> Phone: 865-241-0761 >> Email: zhangb at ornl.gov >> >> ______________________________________________ >> R-help at stat.math.ethz.ch mailing list >> https://www.stat.math.ethz.ch/mailman/listinfo/r-help >> > >-- >Roger Bivand >Economic Geography Section, Department of Economics, Norwegian School of >Economics and Business Administration, Breiviksveien 40, N-5045 Bergen, >Norway. voice: +47 55 95 93 55; fax +47 55 95 93 93 >e-mail: Roger.Bivand at nhh.no--------------------------------- 1060 Commerce Park Oak Ridge National Laboratory P.O. Box 2008, MS 6480 Oak Ridge, TN 37831-6480 Phone: 865-241-0761 Email: zhangb at ornl.gov