簡體   English   中英

4 rowSums* 2 colSums 得到 8 個單元格值

[英]4 rowSums* 2 colSums to get 8 cell values

這可能很簡單,但不知何故我想念它。 如果我創建一個矩陣如下:

m <- matrix(c(154,180,104,438,132,126,131,389),ncol=2)

然后我乘以

e <- rowSums(m)*colSums(m)

結果e只是第一個 sums 向量中的每個值乘以第二個 sums 向量(同時回收第二個)以產生:

[1] 250536 238068 205860 643406

我真正想要的是得到一個包含 8 個值的矩陣,其中每個單元格值為 rowSums(i)*colSums(k) 其中 i = 1 到 4 和 k = 1 到 2

您可以通過使用outer function 獲得x中的每個元素與y中的每個元素的乘積。

m <- matrix(c(154,180,104,438,132,126,131,389),ncol=2)
x <- rowSums(m)
y <- colSums(m)

outer(x, y)
#>        [,1]   [,2]
#> [1,] 250536 222508
#> [2,] 268056 238068
#> [3,] 205860 182830
#> [4,] 724452 643406

代表 package (v0.3.0) 於 2020 年 4 月 12 日創建

如果您熟悉線性代數符號,則以下內容相同:

x %*% t(y)
#>        [,1]   [,2]
#> [1,] 250536 222508
#> [2,] 268056 238068
#> [3,] 205860 182830
#> [4,] 724452 643406

外部 function 也可用於除乘法之外的其他運算:

outer(x, y, "+")
#>      [,1] [,2]
#> [1,] 1162 1064
#> [2,] 1182 1084
#> [3,] 1111 1013
#> [4,] 1703 1605

問題是 R 在向量長度不同時會回收它們。 您可以通過使用矩陣乘法運算符 %*% 得到您想要的答案。

e <- rowSums(m) %*% t(colSums(m))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM