如何用R将非方矩阵转换成方矩阵?
我有一个网络数据,并试图分析它。问题是它缺少一些行或列。我想匹配行和列,所以它可以是一个正方形矩阵 我的数据如下所示:如何用R将非方矩阵转换成方矩阵?,r,R,我有一个网络数据,并试图分析它。问题是它缺少一些行或列。我想匹配行和列,所以它可以是一个正方形矩阵 我的数据如下所示: A B C D E A 0 2 1 4 5 B 1 0 2 4 2 D 2 4 0 2 2 E 1 2 2 2 0 A B C D E A 0 2 1 4 5 B 1 0 2 4 2 C NA NA NA NA NA D 2 4 0 2 2 E 1 2 2 2 0 我想让它看起来像这样: A B C D E A
A B C D E
A 0 2 1 4 5
B 1 0 2 4 2
D 2 4 0 2 2
E 1 2 2 2 0
A B C D E
A 0 2 1 4 5
B 1 0 2 4 2
C NA NA NA NA NA
D 2 4 0 2 2
E 1 2 2 2 0
我想让它看起来像这样:
A B C D E
A 0 2 1 4 5
B 1 0 2 4 2
D 2 4 0 2 2
E 1 2 2 2 0
A B C D E
A 0 2 1 4 5
B 1 0 2 4 2
C NA NA NA NA NA
D 2 4 0 2 2
E 1 2 2 2 0
因为我的数据非常庞大,所以我不能用手来做。是否有任何语法可以自动执行此操作?一个选项是基于唯一的列名和列名(假设它是对称的)创建一个
NA
矩阵,然后通过匹配原始数据集中的列名和列名来填充它
un1 <- unique(sort(c(colnames(m1), rownames(m1))))
m2 <- matrix(NA, length(un1), length(un1), dimnames = list(un1, un1))
m2[row.names(m1), colnames(m1)] <- m1
m2
# A B C D E
#A 0 2 1 4 5
#B 1 0 2 4 2
#C NA NA NA NA NA
#D 2 4 0 2 2
#E 1 2 2 2 0
un1谢谢你的语法。它似乎适用于您的示例,但我的数据中的列和行(第一列和第一行)的名称是数字,所以它不适用于我的数据集(排序似乎很奇怪)。结果表明,原始数据集中的值不会进入新矩阵。你还有其他建议吗?我不知怎么做了一个列和行名称相同的矩阵。但是如果我运行'm2[row.names(m1),colnames(m1)]@Jun yeobKim,而没有显示错误的小的可复制示例(使用dput),则很难知道问题。