我确信有一种非常简单的方法可以做到这一点,但一直遇到麻烦。我基本上有两个8乘8的矩阵。它们都有不同的数据,但也有很多空白(NA)。生成数据的方式在矩阵的同一个单元格中不会有不同的答案,所以基本上如果矩阵1中的单元格中有数据,则矩阵2中的相同单元格为na。以下是生成这些类型的一些代码例如矩阵:
matrix1 <-structure(list(X1 = c(NA, NA, NA, NA, NA, NA, 0, NA), X2 = c(NA,
NA, NA, NA, NA, 1, NA, NA), X3 = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), X4 = c(NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_
), X5 = c(NA_real_, NA_real_, NA_real_, NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_), X6 = c(NA, 0, NA, NA, NA, NA, NA, 0), X7 = c(1,
NA, NA, NA, NA, NA, NA, NA), X8 = c(NA, NA, NA, NA, NA, 1, NA,
NA)), .Names = c("X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8"
), row.names = c(NA, -8L), class = "data.frame")
matrix2 <- structure(list(X1 = c(NA, NA, NA, 1, NA, 1, NA, NA), X2 = c(NA,
NA, NA, 1, NA, NA, NA, 0), X3 = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), X4 = c(1,
1, NA, NA, NA, 0, NA, NA), X5 = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), X6 = c(1,
NA, NA, 0, NA, NA, NA, NA), X7 = c(NA_real_, NA_real_, NA_real_,
NA_real_, NA_real_, NA_real_, NA_real_, NA_real_), X8 = c(NA,
0, NA, NA, NA, NA, NA, NA)), .Names = c("X1", "X2", "X3", "X4",
"X5", "X6", "X7", "X8"), row.names = c(NA, -8L), class = "data.frame")
我想将这些矩阵组合成一个8乘8的矩阵,这两个矩阵的数据点仍然是8×8格式。我试过的大多数事情最终都会以一个矩阵与所有na结束,但应该有一些简单的方法来做到这一点我无法弄清楚。如果您知道某种方法,请告诉我并非常感谢您的帮助!
答案 0 :(得分:4)
我们可以使用pmin
(假设非NA位置不重叠)
pmin(matrix1, matrix2, na.rm = TRUE)
或其他选项coalesce
来自dplyr
library(dplyr)
coalesce(matrix1, matrix2)