In the Matrix package v. 0.995-11 I see that the dgTMatrix Class for compressed, sparse, triplet-form matrices handles Identically indexed data instances by summing their values, e.g.,
library(Matrix) (Mt <- new("dgTMatrix", i = as.integer(c(0,0,1,1,4)), j = as.integer(c(0,1,2,2,4)), x = as.double(1:5), Dim = as.integer(c(5,5)))) ## 5 x 5 sparse Matrix of class "dgTMatrix" ## [1,] 1 2 . . . ## [2,] . . 7 . . <--- 7 = 3 + 4. ## [3,] . . . . . ## [4,] . . . . . ## [5,] . . . . 5 # If instead I make a dgCMatrix-class matrix, the first # instance is overwritten by the second, e.g., library(Matrix) (Mc <- new("dgCMatrix", i = as.integer(c(0,0,1,1,4)), p = as.integer(c(0,1,2,4,5)), x = as.double(1:5), Dim = as.integer(c(5,5)))) ## 5 x 5 sparse Matrix of class "dgCMatrix" ## ## [1,] 1 2 . . ## [2,] . . 4 . <-- the datum '3' has been lost. ## [3,] . . . . ## [4,] . . . . ## [5,] . . . 5 # If one arrives at the dgCMatrix via the dgTMatrix class, # the summed value is of course preserved, e.g., (Mtc <- as(Mt, "dgCMatrix")) ## 5 x 5 sparse Matrix of class "dgCMatrix" ## ## [1,] 1 2 . . . ## [2,] . . 7 . . ## [3,] . . . . . ## [4,] . . . . . ## [5,] . . . . 5 As there is nothing inherent in either compressed, sparse, format that would prevent recognition and handling of duplicated index pairs, I'm curious why the dgCMatrix class doesn't also add x values in those instances? I wonder also if others might benefit also by being able to choose how these instances are handled, i.e., whether they are summed, averaged or overwritten? -John Thaden, Ph.D. Research Assistant Professor of Geriatrics University of Arkansas for Medical Sciences Little Rock AR, USA Confidentiality Notice: This e-mail message, including any a...{{dropped}} ______________________________________________ R-help@stat.math.ethz.ch mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html