2012-03-30 34 views
10
> a<-matrix(c(1:9),3,3) 
> a 
    [,1] [,2] [,3] 
[1,] 1 4 7 
[2,] 2 5 8 
[3,] 3 6 9 
> a[3,]*a[,3] # I expect 1x1 matrix as result of this. 
[1] 21 48 81 
> class(a) 
[1] "matrix" 
> class(a[3,]) 
[1] "integer" 

Trong R, ma trận 1 chiều được thay đổi thành véc tơ. Tôi có thể tránh điều này không? Tôi muốn giữ ma trận 1-D làm ma trận. Thực ra, tôi cần phải ném nhiều loại ma trận đến RcppArmadillo, thậm chí là ma trận zero-D. Thay đổi ma trận thành vector bởi chính nó là vấn đề của tôi.Ma trận 1 chiều được thay đổi thành vectơ trong R

+0

'lớp (a [3,])' chỉ cho bạn biết chế độ lưu trữ. Có lẽ bạn nên sử dụng str() vì nó sẽ cho bạn biết 'length'. –

Trả lời

15

Đây là R FAQ. Bạn cần phải làm a[3,,drop = FALSE].

9

Bạn đang nhân đôi yếu tố nhân bản và ma trận khó hiểu (xem ?"*"). Bạn muốn %*%:

> a[3,]%*%a[,3] 
    [,1] 
[1,] 150 
+1

Đó là câu trả lời đúng cho câu hỏi của OP. –

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