将第二和第三个数组维度的对角线设置为0

时间:2013-11-25 22:48:39

标签: r

我希望能够将矩阵中第二维和第三维的对角线设置为零,如下所示:

array<-array(1,dim=c(3,3,3))
array[,1,1]<-0
array[,2,2]<-0
array[,3,3]<-0

我总是可以使用循环,但我脚本的这部分需要很快。是否有可以同时执行此操作的功能?

谢谢, 莱恩

2 个答案:

答案 0 :(得分:2)

从技术上讲,这也是一个循环:

sapply(1:3,function(i) a[,i,i] <<- 0)

但我认为它对于所有实际目的来说都足够快。

答案 1 :(得分:0)

另一种解决方案(如果行数少于i s,可能会更快):

apply(a, 1, function(x) diag(x) <- 0)