Если бы существовала матрица, например:
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
Вы можете передать вектор 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
Вот базовый код R, использующий diag() + rep()
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