gpt4 book ai didi

r - 替换数组中的对角元素

转载 作者:行者123 更新时间:2023-12-04 11:56:30 24 4
gpt4 key购买 nike

有谁知道一种巧妙/高效的方法来替换数组中的对角元素,类似于对矩阵使用diag(x) <- value?换句话说,是这样的:

> m<-array(1:27,c(3,3,3))
> for(k in 1:3){
+ diag(m[,,k])<-5
+ }
> m
, , 1

[,1] [,2] [,3]
[1,] 5 4 7
[2,] 2 5 8
[3,] 3 6 5

, , 2

[,1] [,2] [,3]
[1,] 5 13 16
[2,] 11 5 17
[3,] 12 15 5

, , 3

[,1] [,2] [,3]
[1,] 5 22 25
[2,] 20 5 26
[3,] 21 24 5

但不使用for循环(我的数组很大,这种操作已经在循环内了)。

非常感谢。

最佳答案

尝试这个:

with(expand.grid(a = 1:3, b = 1:3), replace(m, cbind(a, a, b), 5))

编辑:

这个问题要求整洁/高效,但是,这些当然不是同一回事。这里的一个衬套是紧凑且无循环的,但是如果您正在寻找速度,我想您会发现问题中的循环实际上是所有答案中最快的。

关于r - 替换数组中的对角元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7979193/

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