Blockwise sum of matrix elements

前端 未结 3 1729
悲哀的现实
悲哀的现实 2020-12-18 01:39

I want to go from something like this:

1> a = matrix(c(1,4,2,5,2,5,2,1,4,4,3,2,1,6,7,4),4)
1> a
     [,1] [,2] [,3] [,4]
[1,]    1    2    4    1
[2,]          


        
3条回答
  •  北海茫月
    2020-12-18 02:29

    tapply(a, list((row(a) + 1L) %/% 2L, (col(a) + 1L) %/% 2L), sum)
    #    1  2
    # 1 12 15
    # 2 10 16
    

    I used 1L and 2L instead of 1 and 2 so indices remain integers (as opposed to numerics) and it should run faster that way.

提交回复
热议问题