Поместить в NULL позиции матрицы содержимое другой матрицы (список содержимого) - PullRequest
0 голосов
/ 28 декабря 2018

Имея m1 (матрица 1):

[,1]
200
NULL
NULL
300
NULL
NULL
400
NULL
NULL

и m2:

 [,1]
    1
    2
    3
    4
    5
    6

Мы хотим получить следующий результат:

 [,1]
    200
    1
    2
    300
    3
    4
    400
    5
    6

Поэтому любой элемент m2 должен соответствовать NULL-позициям m1.Слияние, присоединение, добавление ... не работает, если только нет аргумента для этого случая.

m1<-matrix(c(200,NA,NA,300,NA,NA,400,NA,NA), nrow = 9, ncol = 1) #I usually get NULL values in my code results

m2<-matrix(c(1,2,3,4,5,6), nrow = 6, ncol = 1)

Любые идеи приветствуются и вознаграждаются!

1 Ответ

0 голосов
/ 28 декабря 2018

Кажется, что элементы matrix являются элементами list.Таким образом, нам нужно перебрать отдельные элементы с помощью Map (чтобы заменить соответствующие значения из второй матрицы)

m1[] <- Map(function(x, y) {x[is.null(x)] <- y; x}, m1, m2)

Обновление

На основе примера, показанного в посте ОП:NA s, возможно, что длина 'm2' равна количеству NULL элементов в 'm1'.В этом случае мы можем назначить на основе логического индекса, созданного путем циклического перебора элементов 'm1'

m1[sapply(m1, is.null)] <- m2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...