我有一组数字,我想将其扩展为矩阵。列表中有 4 个值,我想将它们扩展为 4x4 矩阵。这是一些示例数据
freq <- c(627,449,813,111)
Run Code Online (Sandbox Code Playgroud)
我想将其展开为一个矩阵,就像这样。抱歉,我刚刚复制并粘贴了数据,因此它不是 R 输出,但希望它有助于理解这个想法。
1 2 3 4 Total
1 197 141 255 35 627
2 141 101 183 25 449
3 255 183 330 45 813
4 35 25 45 6 111
627 449 813 111 2000
Run Code Online (Sandbox Code Playgroud)
单元格是(行总计)x(列总计)/(表总计)的乘积。1,1 中的值 = (627 x 627)/2000 = 197。2,1 中的值 = (627 x 449)/2000 = 141,依此类推。
是否有一个函数可以创建这个矩阵?我将尝试通过循环来完成此操作,但希望有一个函数或矩阵计算技巧可以更有效地完成此操作?如果我没有很好地表达上述内容,我们深表歉意,非常感谢任何帮助。谢谢
小智 6
freq <- c(627,449,813,111)
round(outer(freq, freq)/sum(freq))
#> [,1] [,2] [,3] [,4]
#> [1,] 197 141 255 35
#> [2,] 141 101 183 25
#> [3,] 255 183 330 45
#> [4,] 35 25 45 6
Run Code Online (Sandbox Code Playgroud)