У меня довольно простая проблема, и мне было интересно, знают ли некоторые из вас очень эффективное (= быстрое) решение для этого:
У меня есть две матрицы 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]))))
Спасибо за любые идеи!