首页 > 解决方案 > 在 R 中填充矩阵

问题描述

我有一个填充了下三角形的矩阵,并想用下三角形的匹配值填充矩阵的上三角形。

我一直在尝试的代码是:

    r <-  read.table("rcorrected.csv", header = TRUE, sep = ",", check.names = FALSE)
    m <- as.matrix(r)


m[upper.tri(m, diag = FALSE)] <- m[lower.tri(m, diag= FALSE)]

输出:

Warning message:
In m[upper.tri(m, diag = FALSE)] <- m[lower.tri(m, diag = FALSE)] :
  number of items to replace is not a multiple of replacement length


    structure(m)
            1    2    3    4    5    6    7    8    9   10   11   12
 [1,]  1 1.00   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
 [2,]  2 0.50 1.00   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
 [3,]  3 0.57 0.50 1.00   NA   NA   NA   NA   NA   NA   NA   NA   NA
 [4,]  4 0.00 0.04 0.16 1.00   NA   NA   NA   NA   NA   NA   NA   NA

dput(head(m[, c(2,1)]))
    structure(c(1, 0.5, 0.57, 0, 0, 0.23, 1, 2, 3, 4, 5, 6), .Dim = c(6L, 
    2L), .Dimnames = list(NULL, c("1", "")))

矩阵 m 是否被读取为列表?

标签: r

解决方案


在这里,我们在分配diag = TRUE的 rhs 上分配不相等数量的观察值,并且diag = TRUE应该lower.tri在函数内部而不是函数外部

m[upper.tri(m, diag = FALSE)] <- m[lower.tri(m, diag= FALSE)]

推荐阅读