Как умножить только нечетные строки матрицы, сохраняя при этом четные строки? - PullRequest
0 голосов
/ 23 января 2020

Если бы существовала матрица, например:

m <- matrix(c(1:4), nrow = 4, ncol=4)

Как бы я go умножил только нечетные строки на произвольный скаляр, сохраняя при этом четные строки в том же месте и с тем же значением ?

В этом примере матрица с умножением только двух нечетных строк на два станет:

1 1 1 1          2 2 2 2
2 2 2 2          2 2 2 2
3 3 3 3    ----> 6 6 6 6
4 4 4 4          4 4 4 4

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Вы можете передать вектор bool в матрицу, и, если он делится на количество строк, r скопирует его.

mat <- matrix(1:4,4,4)
mat[c(TRUE,FALSE),] <- mat[c(TRUE,FALSE),] * 2

     [,1] [,2] [,3] [,4]
[1,]    2    2    2    2
[2,]    2    2    2    2
[3,]    6    6    6    6
[4,]    4    4    4    4
0 голосов
/ 23 января 2020

Вот базовый код R, использующий diag() + rep()

diag(rep(c(2,1),nrow(mat)/2))%*% mat

, такой что

> diag(rep(c(2,1),nrow(mat)/2))%*% mat
     [,1] [,2] [,3] [,4]
[1,]    2    2    2    2
[2,]    2    2    2    2
[3,]    6    6    6    6
[4,]    4    4    4    4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...