2017-10-17 73 views
1

我有一個尺寸爲3x1000的陣列。事實上每一列都是有趣的。我想用它來計算一個尺寸爲3x3x1000的數組,其中平板i是原始數組的列i(換句話說,v %*% t(v))的外積。有沒有一種乾淨的方式來做到這一點?帶R陣列的外部產品

下面是一個示例輸入矩陣和輸出數組,在2x4矩陣的情況下。

mat_in <- cbind(c(1, 2), c(3, 4), c(5, 6), c(7, 8)) 
arr_out <- array(c(1, 2, 2, 4, 9, 12, 12, 16, 25, 30, 30, 36, 49, 56, 56, 64), 
       dim = c(2, 2, 4)) 
+1

@jogo我已經加入的示例輸入矩陣和輸出矩陣的要求。 – cgmil

回答

1

這給你所期望的結果:

mat_in <- cbind(c(1, 2), c(3, 4), c(5, 6), c(7, 8)) 
array(apply(mat_in, 2, tcrossprod), dim=c(2,2,4)) 

### test: 
arr_out <- array(c(1, 2, 2, 4, 9, 12, 12, 16, 25, 30, 30, 36, 49, 56, 56, 64), 
       dim = c(2, 2, 4)) 
arr_out - array(apply(mat_in, 2, tcrossprod), dim=c(2,2,4))