![](/img/trans.png)
[英]How to find rows that sum up to certain values of colSums and rowSums?
[英]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.