Как объединить (добавить?) 2 одинаковых размерных матрицы в R? - PullRequest
0 голосов
/ 07 июня 2018

Я уверен, что есть действительно простой способ сделать это, но у меня были проблемы с этим.По сути, у меня есть две матрицы 8 на 8. Они имеют разные данные, но также много пробелов (NA).То, как генерируются данные, не будет разных ответов в одной и той же ячейке в матрицах, поэтому, в основном, если в матрице 1 есть данные в ячейке, то эта же ячейка имеет значение na в матрице 2. Вот код для генерации этих типов.из матриц, например:

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, но должен быть какой-то простой способ сделать это, я просто не могу понять.Если вы знаете, как это сделать, пожалуйста, дайте мне знать и большое спасибо за помощь!

1 Ответ

0 голосов
/ 07 июня 2018

Мы можем использовать pmin (при условии, что позиции не-NA не перекрываются)

pmin(matrix1, matrix2, na.rm = TRUE)

Или другой вариант coalesce из dplyr

library(dplyr)
coalesce(matrix1, matrix2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...