multiplier deux vecteurs - je veux un scalaire, mais je reçois un vecteur?
C'est mon code:
a <-c(1,2,3)
b <-t(a)
print(a*b)
Je m'attends à ce que le résultat soit 14, depuis un vecteur colonne multipliée par un vecteur ligne avec raccord dimensions doivent être un skalar.
Cependant, j'obtiens:
d'impression (a*t(a))
[,1] [,2] [,3]
[1,] 1 4 9
Donc les sommes partielles au lieu de la totalité de la somme. Comment puis-je résoudre ce problème?
Un vecteur colonne multipliée par un vecteur ligne avec raccord dimensions donne une (n x n) de la matrice:
Si vous ne voulez pas ce
matrix(a) %*% t(a)
Si vous ne voulez pas ce
crossprod
retourne alors vous avez besoin pour expliquer avec plus de détails ce que vous les attendez. Notez que crossprod
peut être utiliser pour construire ce qui est des autres domaines est connu comme le produit scalaire ou "produit scalaire". crossprod(1:3)
retourne la somme apparemment vous le souhaitez.OriginalL'auteur user1862770 | 2012-12-08
Vous devez vous connecter pour publier un commentaire.
Si ce que vous voulez, c'est la somme des produits, alors vous avez besoin d'
sum(a*a)
OriginalL'auteur A_K
Deux problèmes, la multiplication dans le mauvais ordre, et le mauvais multiplier fonction.
De manière équivalente:
Ici
a
est une matrice de 1 rangée, trois colonnes.Voir
?"%*%"
et?"*"
print
si vous êtes dans une session, ce qui est probablement le cas.et le
crossprod
ettcrossprod
fonctions.ahm - il n'est pas un crossprodukt je suis à la recherche d'.
Quelqu'un connais un R tutoriel qui ne passent pas pour les chapitres sur "comment faire un vektor", mais elle a un peu plus d'impakt sur le réel de la programmation? par exemple, si j'ai une matrice de la façon de construire sommes sur un certain nombre de vecteurs de la matrice et ainsi de suite.
oui, mais
crossprod(1:3,1:3)
donne le point désiré (intérieure) de produit ...OriginalL'auteur Matthew Lundberg
simplement faire ce
puis
OriginalL'auteur Hal Hayden Stirrup