Как использовать индексирование для замены строки матрицы - PullRequest
0 голосов
/ 10 февраля 2019

Я хотел бы заменить вектор из одной строки на некоторые строки матрицы в R. Вот пример.
Я хотел бы заменить строку "5,6" для строк в A, гдеколичество записей равно 1. Итак, я хотел бы, чтобы «A» выглядело как «A_goal»

Метод, который я попытался (см. нижнюю строку) был близок, но, похоже, он пишет «вниз по столбцам»вместо строк.

A=matrix(c(1,2,1,3,1,2,1,3),4,2)
B=matrix(c(5,6),1,2)
A_goal = matrix(c(5,2,5,3,6,2,6,3),4,2)
A
B
A_goal

# Here is an attempt that didn't work:
A[A==1]=B
A

1 Ответ

0 голосов
/ 10 февраля 2019

Матричное индексирование с использованием {<- выполняется с упорядочением основных столбцов.Таким образом, вам, вероятно, придется использовать apply на основе строк.По сути, это цикл for для строк A. Вам также нужно будет транспонировать, так как apply также доставит результаты в виде столбцов:

 t(apply(A, 1, function(x) if(x[1]==1){B}else{x}))
     [,1] [,2]
[1,]    5    6
[2,]    2    2
[3,]    5    6
[4,]    3    3

Если вы только предполагали, что замена произойдет там, где строкабыло бы c (1,1), тогда логический тест нужно было бы изменить на x == c (1,1)

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