Умножьте два вектора - я хочу скаляр, но получаю вектор?

Это мой код:

a <-c(1,2,3)
b <-t(a)
print(a*b)

Я ожидаю, что результат будет равным 14, так как вектор столбца, умноженный на вектор строки с подходящими размерами, должен быть скаларом.

Однако я получаю:

print (a * t (a))

 [,1] [,2] [,3]

[1,]    1    4    9

Следовательно, частичные суммы вместо целой суммы. Как я могу это исправить?

Ответ 1

Если вам по существу нужна сумма продуктов, тогда вам нужно всего sum(a*a)

Ответ 2

Две проблемы, умножение в неправильном порядке и неправильная функция умножения.

> print(t(a)%*%a)
     [,1]
[1,]   14

Эквивалентное:

> a=matrix(c(1,2,3),ncol=3)
> print (a %*% t(a))
     [,1]
[1,]   14

Здесь a - это матрица из 1 строки, трех столбцов.

См. ?"%*%" и ?"*"

Ответ 3

просто выполните это

a <-c(1,2,3)
> b<-t(a)
> b

> t(b)

затем

сумма (а * т (б)) [1] 14

Ответ 4

Вы можете просто сделать это,

> a <-c(1,2,3)
> b <-t(a)

> b %*% a

Здесь %*% действует как матричный продукт.