Умножьте часть матрицы на определенное число - PullRequest
0 голосов
/ 12 июля 2020

У меня есть матрица, и я хочу умножить 2 на числа в матрице от 10 до 20, а также на 3 на числа в матрице от 30 до 40, а остальные числа остаются на своих местах

например у меня две матрицы:

Var1   Var2  Var3
  20    40    50
  25    5      6
  20    13    45
  3     8     100

Наконец, я хочу добраться до этой матрицы

 Var1   Var2  Var3
  40     120   50
  25      5    6 
  40      26   45  
  3       8    100

Ответы [ 2 ]

0 голосов
/ 12 июля 2020

Вы можете apply функцию ifelse для столбцов, в которых вы хотите умножить значения:

mat[,1:2] <- t(apply(mat[,1:2], 1, function(x) ifelse(x >= 20 & x <=30, x*2,
                                                      ifelse(x >= 30 & x <=40, x*3, x))))

Результат:

mat
     Var1 Var2 Var3
[1,]   40  120   50
[2,]   50    5    6
[3,]   40   13   45
[4,]    3    8  100

Данные:

mat <- structure(c(20L, 25L, 20L, 3L, 40L, 5L, 13L, 8L, 50L, 6L, 45L, 
                 100L), .Dim = 4:3, .Dimnames = list(NULL, c("Var1", "Var2", "Var3"
                 )))
0 голосов
/ 12 июля 2020

Вы можете попробовать:

#Data
B <- structure(c(20L, 25L, 20L, 3L, 40L, 5L, 13L, 8L, 50L, 6L, 45L, 
100L), .Dim = 4:3, .Dimnames = list(NULL, c("Var1", "Var2", "Var3"
)))

#Index
index1 <- which(B>=10 & B<=20)
index2 <- which(B>=30 & B<=40)
#Product
B[index1] <- 2*B[index1]
B[index2] <- 3*B[index2]

     Var1 Var2 Var3
[1,]   40  120   50
[2,]   25    5    6
[3,]   40   26   45
[4,]    3    8  100
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...