gpt4 book ai didi

r - 用于约束矩阵计算的循环

转载 作者:行者123 更新时间:2023-12-05 00:51:44 24 4
gpt4 key购买 nike

我在R中有一个随机矩阵,即M1定义如下

M1<-matrix(1:20,nrow=4,ncol=5)

> M1
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20

我想根据以下约束创建第二个。每行必须包含减去前一点的行总和。每行的含义元素 (1,1) = 45、(1,2)=44、(1,3)=39 等。但我想在一个循环中制作它,所以每次有人更改矩阵(及其维度)时,代码都能够计算相应的矩阵。最后的矩阵,称为 M2 必须是那种形式

> M2
[,1] [,2] [,3] [,4] [,5]
[1,] 45 44 39 30 17
[2,] 50 48 42 32 18
[3,] 55 52 45 34 19
[4,] 60 56 48 36 20

如何定义循环以便计算它?

最佳答案

matrixStats中有rowCumsums函数可以使用

library(matrixStats)
ind <- ncol(M1):1
rowCumsums(M1[, ind])[, ind]

-输出

     [,1] [,2] [,3] [,4] [,5]
[1,] 45 44 39 30 17
[2,] 50 48 42 32 18
[3,] 55 52 45 34 19
[4,] 60 56 48 36 20

或者可以使用 spatstat.utils

中的 revcumsum
library(spatstat.utils)
t(apply(M1, 1, revcumsum))

-输出

      [,1] [,2] [,3] [,4] [,5]
[1,] 45 44 39 30 17
[2,] 50 48 42 32 18
[3,] 55 52 45 34 19
[4,] 60 56 48 36 20

关于r - 用于约束矩阵计算的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71356999/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com