Ответ 1
Оператор %*%
в R имеет матричное умножение:
> mymat %*% myvec
[,1]
[1,] 116
[2,] 122
...
[10,] 170
У меня есть следующая проблема:
myvec <- c(1:3)
mymat <- as.matrix(cbind(a = 6:15, b = 16:25, c= 26:35))
mymat
a b c
[1,] 6 16 26
[2,] 7 17 27
[3,] 8 18 28
[4,] 9 19 29
[5,] 10 20 30
[6,] 11 21 31
[7,] 12 22 32
[8,] 13 23 33
[9,] 14 24 34
[10,] 15 25 35
Я хочу умножить mymat с myvec и построить новый вектор таким образом, чтобы
sum(6*1, 16*2, 26*3)
sum(7*1, 17*2, 27*3)
....................
sum(15*1, 25*2, 35*3)
Извините, это простой вопрос, который я не знаю...
Изменить: опечатка исправлена
Оператор %*%
в R имеет матричное умножение:
> mymat %*% myvec
[,1]
[1,] 116
[2,] 122
...
[10,] 170
Если вам нужен векторный результат вместо результата матрицы в качестве вывода, вы также можете использовать.
apply(mymat*myvec,1,sum)
Немного больше обходного решения, чем Оуэн, но оно работает.
Матрицы - это векторы в главном порядке столбца:
colSums( t(mymat) * myvec )
(Отредактировано после того, как мы надеемся правильно прочитать вопрос на этот раз.)
dot(scalar)
и перекрестных продуктов. для скалярного произведения *
, а для поперечного произведения %*%
- операторы Альтернативным вариантом может быть следующий:
rowSums(t(apply(mymat, 1, function(x) myvec*x)),na.rm=T)
Единственный способ, который я нашел, который может игнорировать NA внутри матрицы.