在 R 中将大数组的对角线设置为零

Set diagonals of a large array to zero in R

由于 DCC-GARCH,我有一个动态相关网络。我需要将每个数组的对角线转换为零。这是每日数据,所以我每天都有相关数组。当我输入

print(Corr)

一天的数组看起来像这样(我只能显示一个页面,因为只有一天适合页面,但我有 1000 天的相关数组)

如何一次将对角线转换为零?

试试这个:

Corr <- array( apply( Corr, 3, function(x) { 
          x[ row(x) == col(x) ] <-0; x} ), dim(Corr) )

apply 函数可以处理任何维度,这将传递一个矩阵-"slice" 到内部匿名函数并将其对角线设置为零。