Эффективно вычесть из матрицы по столбцам - PullRequest
0 голосов
/ 04 мая 2018

У меня довольно простая проблема, и мне было интересно, знают ли некоторые из вас очень эффективное (= быстрое) решение для этого:

У меня есть две матрицы mat и arr, и я хочу выполнить следующее: взять каждый столбец arr и вычесть его из mat. Затем возьмите логарифм один минус абсолютное значение разности. Вот и все. Прямо сейчас я использую sapply (см. Ниже), но я почти уверен, что возможно сделать это быстрее (возможно, используя sweep?)

Код:

mat <- matrix(.3, nrow=10, ncol = 4)
arr <- matrix(.1, nrow=10, ncol = 10000)
i <- ncol(arr)
result <- sapply(1:i, function(ii) (log(1-abs(mat-arr[,ii]))))

Спасибо за любые идеи!

1 Ответ

0 голосов
/ 04 мая 2018

Мы могли бы воспроизвести и затем сделать разницу

result2 <- matrix(log(1- abs(rep(mat, ncol(arr)) - 
                      rep(arr, ncol(mat)))), ncol = i) 
identical(result, result2)
#[1] TRUE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...