r - 如何用其他矩阵匹配行和列的值填充矩阵?

标签 r matrix

我正在尝试使用其他矩阵中的值与 R 来创建一个新矩阵。我正在尝试在导入值时匹配行和列的名称。这就是尝试做的事情:

我有两个矩阵;

     X1  X2  X3  X4
 X1   0   9   8   0
 X2   1   2   3   5
 X4   6   1   2   4

     X1  X2  X3  X4
 X1  NA  NA  NA  NA   
 X2  NA  NA  NA  NA   
 X3  NA  NA  NA  NA   
 X4  NA  NA  NA  NA   

我想做

     X1  X2  X3  X4
 X1   0   9   8   0   
 X2   1   2   3   5
 X3  NA  NA  NA  NA   
 X4   6   1   2   4

这些矩阵只是我的数据集的简单示例,我的真实数据更复杂。

非常感谢,

最佳答案

检查两个矩阵中的行名和列名匹配将防止出现下标越界错误。见下文。

mat2[rownames(mat2) %in% rownames(mat1), 
     colnames(mat2) %in% colnames(mat1)] <- mat1[rownames(mat1) %in% rownames(mat2), 
                                                 colnames(mat1) %in% colnames(mat2)] 
mat2
#    X1 X2 X3 X4
# X1  0  9  8  0
# X2  1  2  3  5
# X3 NA NA NA NA
# X4  6  1  2  4

数据:

mat1 <- read.table(text = '    X1  X2  X3  X4
 X1   0   9   8   0
                   X2   1   2   3   5
                   X4   6   1   2   4', header = TRUE)

mat1 <- as.matrix(mat1)
mat2 <- matrix(NA, nrow = 4, ncol = 4, dimnames = list(paste0("X", 1:4),
                                                       paste0("X", 1:4)))

关于r - 如何用其他矩阵匹配行和列的值填充矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48481853/

相关文章:

r - 如何用 plotly 抑制警告?

r - 使用点-点时为 data.table 赋值

c - 带有可选文本的 Scanf

android - 适用于 Android 的 OpenGL ES 2.0 翻译 - 似乎弄乱了矩阵

r - 将简单的三元组矩阵(slam)转换为 R 中的稀疏矩阵(矩阵)

r - 从数据框中的第一行创建数据框的标题

r - 从多边形的边绘制等距点

r - 在 data.table 中按组和按日期连续累积列中的条目

python - 如何计算大矩阵的行列式而不会溢出?

java - Lejos 在初始化矩阵时给出错误