r - 如何使用 R 制作对称矩阵?
问题描述
我正在尝试使用 R 制作对称矩阵。我已经有一个矩阵。我的矩阵很大,所以下面是一个简单的例子。
前任。
1 2 3
4 5 6
7 8 9
我需要让他们像这样。
1 2+4 3+7
4+2 5 6+8
7+3 8+6 9
//所以我尝试了这个。// mat 是我正在使用的矩阵。
lowervector <- square_07[lower.tri(square_07, diag = FALSE)]
uppervector <- square_07[upper.tri(square_07, diag = FALSE)]
lowermat <- square_07
uppermat <- square_07
lowermat[lower.tri(lowermat, diag = FALSE)] <- t(square_07)[lower.tri(square_07, diag = FALSE)]
uppermat[upper.tri(uppermat, diag = FALSE)] <- t(square_07)[upper.tri(square_07, diag = FALSE)]
当我执行最后两行时,出现错误;
下标 'upper.tri(uppermat, diag = FALSE)' 是一个矩阵,数据 't[upper.tri(square_07, diag = FALSE)]' 的大小必须为 1。
你应该知道。上面的矩阵只是一个例子。我的实际矩阵要大得多。它是一个 248*248 矩阵。
我怎么解决这个问题?
解决方案
这更简单:
result <- square_07 + t(square_07)
diag(result) <- diag(square_07)
result
# [,1] [,2] [,3]
# [1,] 1 6 10
# [2,] 6 5 14
# [3,] 10 14 9
推荐阅读
- php - 如何从 PDO 准备语句中获取结果
- java - swagger 是否依赖于 jax-rs 或 spring mvc?
- .net - IIS 中托管的 Web 应用程序引发网关超时错误
- python - Python整数输入到相应的命令值
- python - 避免在更新参数中没有 .caption(或 user.id 或.....)时收到错误(“NoneType”类型的参数不可迭代)
- c - fscanf() 如何处理双精度值?
- javascript - JavaScript:从文件阅读器中提取 base64 字符串
- ios - 减少文本字段中左视图和光标之间的差距
- amazon-web-services - AWS Cognito 角色限制调用 Lambda 的权限
- javascript - 在移动设备上将按空格键更改为屏幕按钮