gpt4 book ai didi

arrays - 如何简单地折叠(求和)R 中数组中的某些行

转载 作者:行者123 更新时间:2023-12-02 03:15:25 25 4
gpt4 key购买 nike

我想对数组中的几个特定行求和,而不是整个数组。

假设我有一个数组

qq <- array(data = rep(1, 12), dim = c(3,2,2))

看起来像

    , , 1

[,1] [,2]
[1,] 1 1
[2,] 1 1
[3,] 1 1

, , 2

[,1] [,2]
[1,] 1 1
[2,] 1 1
[3,] 1 1

我想将第 2 行和第 3 行相加得到

, , 1

[,1] [,2]
[1,] 1 1
[2,] 2 2

, , 2

[,1] [,2]
[1,] 1 1
[2,] 2 2

我可以通过对所需行求和并将它们和旧行放在一个新数组中来填充,从而相当容易但不优雅地做到这一点,但这似乎是一种笨拙的方法。例如:

qq23sum <- apply(X = qq[2:3,,], MARGIN = c(2,3), FUN = sum)

qw <- array(dim = c(2,2,2))

qw[1,,] <- qq[1,,]
qw[2,,] <- qq23sum

编辑:作为对评论的回应,我想对数组中的任意行或其他维度求和,因此更复杂的示例可能是:

qq <- array(data = rep(1, 12000), dim = c(30, 20, 20))


qq23sum <- apply(X = qq[c(2, 3, 10, 11, 13),,], MARGIN = c(2,3), FUN = sum)

qw <- array(dim = c(26, 20,20))

然后根据上述内容将数组放入正确位置的更多填充...


我觉得那里有一个优雅的解决方案——有人吗?

最佳答案

我们用新的维度初始化另一个数组,然后使用 for 循环

qq1 <- array(NA, c(2, 2, 3))
for(j in seq(dim(qq1))){
qq1[,,j] <- rbind(qq[,,j][1,], colSums(qq[,,j][-1,]))
}


qq1
#, , 1
#
# [,1] [,2]
#[1,] 1 1
#[2,] 2 2

#, , 2

# [,1] [,2]
#[1,] 1 1
#[2,] 2 2

#, , 3

# [,1] [,2]
#[1,] 1 1
#[2,] 2 2

关于arrays - 如何简单地折叠(求和)R 中数组中的某些行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37292986/

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