【发布时间】:2017-11-16 19:58:32
【问题描述】:
我是编程和编码的新手,目前正在学校学习 R 作为我的统计认证的一部分。
我们被要求创建一个名为“mat”的 10 x 10 矩阵,其中包含对角线上的数字 1 和非对角线上的数字 0。
我使用以下方法完成了此操作:
mat<-diag(10)
mat
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 1 0 0 0 0 0 0 0 0 0
[2,] 0 1 0 0 0 0 0 0 0 0
[3,] 0 0 1 0 0 0 0 0 0 0
[4,] 0 0 0 1 0 0 0 0 0 0
[5,] 0 0 0 0 1 0 0 0 0 0
[6,] 0 0 0 0 0 1 0 0 0 0
[7,] 0 0 0 0 0 0 1 0 0 0
[8,] 0 0 0 0 0 0 0 1 0 0
[9,] 0 0 0 0 0 0 0 0 1 0
[10,] 0 0 0 0 0 0 0 0 0 1
然后我被要求在 k=3 的矩阵中划分出一个 k x k 块,并且也有这个单位结构,并描述有多少种方法可以做到这一点。
我只是想出了如何做到这一点:
mat2<-mat[c(1,2,3),c(1,2,3)]
mat2
[,1] [,2] [,3]
[1,] 1 0 0
[2,] 0 1 0
[3,] 0 0 1
到目前为止,我猜这么好?但是,现在我真的被卡住了,我不知道如何进行以下操作,使用 mat2 我现在被要求用这样的矩阵替换 mat (mat2) 的块对角线部分:
[,1] [,2] [,3]
[1,] 1 .5 .25
[2,] .5 1 .5
[3,] .25 .5 1
我的教授也暗示过,使用外部函数会使这更容易,我真的不知道该怎么做,我尝试使用 upper.tri 和 lower.tri 函数,但我不太成功那个。
我将非常感谢任何帮助。提前谢谢!
【问题讨论】:
-
重新“有多少种方法?”另一种方式是,例如
mat[2:4, 2:4]。重新“替换”可能会查看相关文档,help.search("replace", package="base")