Ani. Wektor nie ma domyślnie atrybutu wymiaru, ma tylko długość.
Jeśli spojrzeć na dokumentacji dotyczącej arytmetyki macierzy, help("%*%")
, widać, że:
mnoży dwie macierze, jeśli są one dopasowujący. Jeśli jeden argument jest wektorem , będzie on promowany do macierzy wiersza lub kolumny, aby uczynić dwa argumenty zgodne. Jeśli oba są wektorami o tej samej długości, , zwrócą one wewnętrzny produkt (jako macierz).
Tak więc R zinterpretuje wektor w jakikolwiek sposób, który sprawi, że produkt matrycowy będzie rozsądny.
Niektóre przykłady ilustrujące:
> b <- c(7,10)
> b
[1] 7 10
> dim(b) <- c(1,2)
> b
[,1] [,2]
[1,] 7 10
> dim(b) <- c(2,1)
> b
[,1]
[1,] 7
[2,] 10
> class(b)
[1] "matrix"
> dim(b) <- NULL
> b
[1] 7 10
> class(b)
[1] "numeric"
macierz jest to wektor z atrybutem wymiarowej. Dodanie wyraźnego wymiaru sprawia, że jest matrycą, a R zrobi to w jakikolwiek sposób ma sens w kontekście.
a przykładem zachowania w kontekście mnożenia macierzy:
> m <- matrix(1:2,1,2)
> m
[,1] [,2]
[1,] 1 2
> m %*% b
[,1]
[1,] 27
> m <- matrix(1:2,2,1)
> m %*% b
[,1] [,2]
[1,] 7 10
[2,] 14 20
... z pewnym nastawieniem na traktowanie go jako wektor kolumnowy? 't (b)' jest w końcu wektorem wiersza. – Frank