以'sweep'的方式将单列矩阵与R中的table组合

Combining a single column matrix with a table in R in the manner of 'sweep'

我有一个名为 'starts' 的初始起始值的单列矩阵(rbind 操作的结果),用于几个从不同月份开始并显示如下的时间序列:

starts <- matrix(rep(100,5),ncol=1)
rownames(starts) <- month.name[1:5]
starts          
          [,1]
January   100
February  100
March     100
April     100
May       100

显然在现实中起始数字并不总是 100。

我的目标是将其与单独的 table() 相结合,其中包含 'starts' 每月递减的递减量。

mytable <- structure(c(20L, 0L, 0L, 0L, 0L, 10L, 10L, 0L, 0L, 0L, 5L, 10L, 
5L, 0L, 0L, 5L, 10L, 5L, 10L, 0L), .Dim = c(5L, 4L), .Dimnames = list(
    c("1", "2", "3", "4", "5"), c("1", "2", "3", "4")), class = "table")
mytable

    1    2   3   4
1  20   10   5    5
2   0   10  10   10
3   0    0   5    5
4   0    0   0   10
5   0    0   0    0

这里的周期:1,2,3,4指的是月与月之间的周期,所以周期1表示一个时间序列值在一月到二月之间下降了多少。竖排数字1,2,3,4,5对应时间序列

输出应该是一个新的 table,如下所示:

         January  February  March  April   May
January    100       80      70      65     60
February            100      90      80     70
March                       100      95     90
April                               100     90
May                                        100

我想我也许可以用扫的方式做一个函数,比如:

result <- sweep(starts,2,mytable,"-")

但是,显然扫描对 tables 的相关矩阵性质不起作用,例如上述。

非常感谢您的帮助。

不确定这是否理想,但这是一个尝试:

starts[,rep(1,5)] - cbind(0, t(apply(mytable, 1, cumsum)) )

#         [,1] [,2] [,3] [,4] [,5]
#January   100   80   70   65   60
#February  100  100   90   80   70
#March     100  100  100   95   90
#April     100  100  100  100   90
#May       100  100  100  100  100