Finden Skalarprodukt in r

Ich bin auf der Suche nach der dot-Produkt von zwei Matrizen in R. In der q-matrix, die Nationales Recht umgesetzt werden muss, habe ich drei verschiedene q-Werte, die ich zufällig generierten früher, und in die z-matrix von drei zufällig generierten z-Werte dienen als Koordinaten von einem beliebigen Punkt ich. Ich habe:

    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

Jedoch, wenn ich versuche zu berechnen s[i], bekomme ich Error in t(q) * z : non-conformable arrays. Ich bin nicht sicher, warum dies wäre als ich, Sie scheinen beide die gleiche Länge haben.

Dies ist mein erstes mal mit R also ich bin nicht wirklich sicher, was Los ist.

Dank!

  • Sie zeigen eine reproduzierbare Beispiel q= matrix(c(q0,q1,q2), ncol=3) Error in matrix(c(q0, q1, q2), ncol = 3) : object 'q0' not found
  • Dot Produkt ist %*%.
  • Ich habe es reproduzierbar, sorry für die, dies nicht zu tun, bevor.
  • Haben Sie versucht, die Pascal ' s Vorschlag
  • Ich geändert es zu"%*%, aber nicht bekomme die Fehlermeldung: Warning message: In s[i] = t(q) %*% z : Anzahl der Elemente zu ersetzen, die nicht ein Vielfaches von Ersatz-Länge.
  • Basierend auf dem Beispiel, es funktionierte.
  • crossprod(q, z)
  • meinst du mein Beispiel in der Frage geändert haben, verwenden Sie %*%? Mit diesem bekomme ich die Fehlermeldung, dass ich bereits in meinem letzten Kommentar zu Pascal
  • Ich bekomme den gleichen Fehler wenn ich mit crossprod
  • Es ist besser, einen Samen für die es reproduzierbar. also set.seed(1) vor der runif. Dies ist, was ich bekommen 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
  • Wo hast du das definieren s?
  • verwenden Sie genau das, was ich schrieb, nur mit crossprod(q,z?). Verwenden Sie die R-Konsole? Wenn dem so ist, sind wir die gleichen Dinge tun, also bin ich nicht sicher, warum es ist nicht für mich arbeiten...
  • Ich hätte s= NULL , sorry
  • Legen Sie einige Samen. set.seed(1); z1= runif(100, min=0, max= 20);....crossprod(q,z)
  • Es hat funktioniert!! Danke. Aber wie bekomme ich nun das Skalarprodukt von diesem?
  • vergessen zu-tag Sie
  • Ich habe den gleichen Fehler "Fehler in v %*% w : non-konformen Argumenten". crossprod(v, w) geholfen. Danke.
  • a,b sind beide matrix: dann a %*% b

Schreibe einen Kommentar