Trouver produit scalaire dans r

Je suis en train d'essayer de trouver le produit scalaire de deux matrices dans R. Dans le q de la matrice, qui doit être transposée, j'ai trois différentes valeurs de q que j'ai généré de façon aléatoire, plus tôt, et dans la z de la matrice de trois généré de façon aléatoire z valeurs qui servent de coordonnées d'un point au hasard je. J'ai:

    z0= NULL
    for (i in 1:100){
        z0[i]= 1
    }
    z1= runif(100, min=0, max= 20)
    z2= runif(100, min=0, max=20)
    q0= runif(1, 0, 1)
    q1= runif(1, 0, 1)
    q2= runif(1, 0, 1)
    i= runif(1, 1, 101)
    i= ceiling(i-1)
    q= matrix(c(q0,q1,q2), ncol=3)
    z= matrix(c(z0[i],z1[i],z2[i]), ncol=3)
    s[i]= t(q)*z

Cependant, lorsque j'essaie de calculer s[i], j'obtiens Error in t(q) * z : non-conformable arrays. Je ne suis pas sûr pourquoi ce serait que je, ils semblent tous les deux ont la même longueur.

C'est ma première fois à l'aide de R, donc je ne suis pas vraiment sûr de ce qui se passe.

Merci!

  • Vous devez montrer un exemple reproductible q= matrix(c(q0,q1,q2), ncol=3) Error in matrix(c(q0, q1, q2), ncol = 3) : object 'q0' not found
  • Produit scalaire est %*%.
  • Je l'ai fait il reproductible, désolé de ne pas le faire avant.
  • Avez-vous essayé la suggestion de Pascal
  • Je l'ai changé pour %*% mais pas obtiens le message d'erreur: le message d'Avertissement: Dans s[i] = t(q) %*% z : nombre d'éléments à remplacer n'est pas un multiple de remplacement de la longueur.
  • S'appuyant sur l'exemple, il a travaillé.
  • crossprod(q, z)
  • voulez-vous dire mon exemple dans la question changé d'utiliser le %*%? Avec que j'obtiens l'erreur que j'ai mentionné dans mon dernier commentaire de Pascal
  • Je reçois la même erreur lorsque j'utilise crossprod
  • Il est préférable de définir une graine pour le rendre reproductible. c'est à dire set.seed(1) avant la runif. C'est ce que je reçois crossprod(q, z) [,1] [,2] [,3] [1,] 0.7622588 10.68985 14.67339 [2,] 0.8413184 11.79857 16.19527 [3,] 0.8964904 12.57230 17.25733
  • Où avez-vous définir s?
  • êtes-vous en utilisant exactement ce que j'ai écrit juste avec crossprod(q,z?). Êtes-vous à l'aide de la R de la console? Si si, nous faisons les mêmes choses donc je ne sais pas pourquoi il ne fonctionne pas pour moi...
  • Je devrais avoir inclus s= NULL , désolé
  • Jeu de certaines graines. set.seed(1); z1= runif(100, min=0, max= 20);....crossprod(q,z)
  • Il a travaillé!! Merci. Mais maintenant, comment puis-je obtenir le produit scalaire de cela?
  • oublié de vous marquer
  • J'ai eu le même message d'erreur "rror en v %*% w : non conforme arguments". crossprod(v, w) a contribué à la. Merci.
  • a,b sont tous les deux de la matrice: puis un %*% b