2011-11-08 72 views
18

Tôi đã sau vấn đề:R: ma trận của phép nhân véc tơ

myvec <- c(1:3) 

mymat <- as.matrix(cbind(a = 6:15, b = 16:25, c= 26:35)) 
mymat 
     a b c 
[1,] 6 16 26 
[2,] 7 17 27 
[3,] 8 18 28 
[4,] 9 19 29 
[5,] 10 20 30 
[6,] 11 21 31 
[7,] 12 22 32 
[8,] 13 23 33 
[9,] 14 24 34 
[10,] 15 25 35 

Tôi muốn nhân mymat với myvec và xây dựng vector mới mà

sum(6*1, 16*2, 26*3) 
sum(7*1, 17*2, 27*3) 

.................... 
sum(15*1, 25*2, 35*3) 

Xin lỗi, đây là câu hỏi đơn giản mà tôi không biết ...

Chỉnh sửa: sửa lỗi chính tả

Trả lời

33

.210 nhà điều hành trong R không nhân ma trận:

> mymat %*% myvec 
     [,1] 
[1,] 116 
[2,] 122 
... 
[10,] 170 
1

Nếu bạn muốn có một kết quả vector thay vì một kết quả ma trận như đầu ra, bạn cũng có thể sử dụng ..

apply(mymat*myvec,1,sum) 

hơn Một chút của một giải pháp vòng xoay so với Owen, nhưng nó hoạt động.

+1

Hoặc 'c (mymat% *% myvec)' sẽ tạo ra một véc tơ – Owen

+1

Không nó không hoạt động, ma trận được lưu trữ theo thứ tự cột lớn, vì vậy bạn cần phải chuyển đổi chúng trước khi bạn có thể áp dụng các hoạt động hàng khôn ngoan (bạn thực sự áp dụng các hoạt động cột-khôn ngoan trên ma trận của bạn). Đó sẽ là 'áp dụng (t (mymat) * myvec, 1, tổng)' – Calimo

0

Ma trận là vectơ để lớn cột:

colSums( t(mymat) * myvec) 

(Chỉnh sửa sau khi hy vọng đọc câu hỏi một cách chính xác thời gian này.)

+0

Tại sao c() xung quanh toàn bộ biểu thức? – thelatemail

+0

Có thể không cần thiết? Ý tưởng là như vậy nó kết thúc như một vectơ. Nhưng ý tưởng đó có vẻ quá thận trọng. Tôi sẽ thả nó. –

+0

Nếu ma trận được lưu trữ trong thứ tự cột lớn, thì bạn cần phải chuyển nó trước khi áp dụng phép nhân hàng. 'colSums (t (mymat) * myvec)' – Calimo

0

Owen là hoàn toàn đúng. Vấn đề không phân biệt được dot(scalar) và sản phẩm chéo. cho sản phẩm vô hướng * và cho sản phẩm chéo %*% là nhà khai thác

0

Một thay thế, nhưng cách còn có thể là một điều này:

rowSums(t(apply(mymat, 1, function(x) myvec*x)),na.rm=T) 

có phải là cách duy nhất mà tôi phát hiện ra rằng có thể bỏ qua của Quốc hội bên trong ma trận.

Các vấn đề liên quan