2017-08-02 195 views
0

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

print(Corr)

数组看起来像这样一天(我只能显示一个页面只有一天适合的页面,但我有千天相关排列) enter image description here

哪有我一次将对角线转换为零?

+0

diag()函数在一个语句中完成这项工作。 diag(Corr)< - 0 如果您有多个数组,您可以使用for循环或map函数对所有数组执行相同操作 –

+0

@Raj Padmanabhan感谢您的回应。 diag()适用于矩阵。我有什么是大阵。它给出了这样的错误:'diag <-'('* tmp *',value = 0)中的错误: 只有矩阵对角线可以被替换' – Demet

+0

你是否反对'as.matrix()'? – CPak

回答

1

试试这个:

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

的应用功能,可以与任何尺寸的工作,这将提供一个矩阵定“切片”,以内部匿名函数,并设置其对角线为零。

+0

非常感谢。我们可以修复它吗?另外,只是对'apply'(Corr,3,function(x)'3是什么意思?'是否意味着将函数应用于所有行和列? – Demet

+0

“3”是如果你想要暗淡的名字,但是只需要将暗淡的名字存储在一个临时变量中并重新标记该数组。 dimnames(Corr)< - tempnames'。(方式t o感谢您使用接受检查。) –