Re: [R] sub-matrix block size

From: Santosh <santosh2005_at_gmail.com>
Date: Wed, 27 Apr 2011 06:41:13 -0700

Thanks, David! That is another interesting perspective to (sub/super) diagonal story! For now I was looking only at block sizes of lower triangle submatrices as Dennis suggested.

Regards,
Santosh

On Wed, Apr 27, 2011 at 5:57 AM, David Winsemius <dwinsemius_at_comcast.net>wrote:

>
> On Apr 27, 2011, at 12:07 AM, Dennis Murphy wrote:
>
> Hi:
>>
>> Maybe this can help get you started. Reading your data into a matrix m,
>>
>> m <- structure(c(1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0,
>> 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
>> 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0,
>> 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), .Dim = c(11L,
>> 11L))
>>
>> rowSums(m) + colSums(m) - 1
>> [1] 2 2 1 -1 3 3 3 3 3 3 -1
>>
>> The pair of 2's => a 2 x 2 block, 1 => a 1 x 1 matrix with value 1, -1
>> => a 1 x 1 matrix with entry 0, a triplet of 3's => a 3 x 3 subblock,
>> etc. You should be able to figure out the rows and columns for each
>> submatrix from the indices of the vector above; the values provide an
>> indication of matrix size as well as position.
>>
>>
> If we are in the stage of providing potentially useful but incomplete
> ideas, this would be my notion. Use the row and col functions with "[" to
> locate non-zero elements in the diagonal and subdiagonal:
>
> Diagonal: (My matrix was named `mm`)
> > mm[row(mm)==col(mm)]
> [1] 1 1 1 0 1 1 1 1 1 1 0
> First subdiagonal:
> > mm[row(mm)==col(mm)+1]
>
> [1] 0 0 0 0 0 0 0 0 0 0
> First superdiagonal:
> > mm[row(mm)==col(mm)-1]
> [1] 1 0 0 0 1 1 0 1 1 0
>
> Perhaps a combination of the two? It seems as though the rowSums/colSums
> approach might be insensitive to whether triangular blocks were sub or super
> diagonal:
>
> > rowSums(mm) + colSums(mm) - 1
>
> [1] 2 2 1 -1 3 3 3 3 3 3 -1
> > mm[1,2]<-0
> > mm[2,1]<-1
> > rowSums(mm) + colSums(mm) - 1
>
> [1] 2 2 1 -1 3 3 3 3 3 3 -1
>
> HTH,
>> Dennis
>>
>>
>>
>> On Tue, Apr 26, 2011 at 5:13 PM, Santosh <santosh2005_at_gmail.com> wrote:
>>
>>> Dear Rxperts
>>>
>>> Below is a small vector of values of zeros and non-zeros... was wondering
>>> if
>>> there is an efficient way to get the block sizes of submatrices of a big
>>> matrix similar to the one shown below? diagonal elements can be zero too.
>>> Rows with only a diagonal element may be considered as a unit block size.
>>>
>>> c(1,0,0,0,0,0,0,0,0,0,0,
>>> 1,1,0,0,0,0,0,0,0,0,0,
>>> 0,0,1,0,0,0,0,0,0,0,0,
>>> 0,0,0,0,0,0,0,0,0,0,0,
>>> 0,0,0,0,1,0,0,0,0,0,0,
>>> 0,0,0,0,1,1,0,0,0,0,0,
>>> 0,0,0,0,1,1,1,0,0,0,0,
>>> 0,0,0,0,0,0,0,1,0,0,0,
>>> 0,0,0,0,0,0,0,1,1,0,0,
>>> 0,0,0,0,0,0,0,1,1,1,0,
>>> 0,0,0,0,0,0,0,0,0,0,0)
>>>
>>> Thanks much!
>>> Santosh
>>>
>>> [[alternative HTML version deleted]]
>>>
>>> ______________________________________________
>>> R-help_at_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.
>>>
>>>
>> ______________________________________________
>> R-help_at_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
>
>

        [[alternative HTML version deleted]]



R-help_at_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. Received on Wed 27 Apr 2011 - 13:47:32 GMT

Archive maintained by Robert King, hosted by the discipline of statistics at the University of Newcastle, Australia.
Archive generated by hypermail 2.2.0, at Fri 29 Apr 2011 - 17:50:34 GMT.

Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help. Please read the posting guide before posting to the list.

list of date sections of archive