gpt4 book ai didi

r - 使用原始矩阵得到几个新矩阵

转载 作者:行者123 更新时间:2023-12-04 09:07:13 26 4
gpt4 key购买 nike

我有一个由 4 列组成的矩阵(即第 1 列、第 2 列、第 3 列和第 4 列)

  V1 V2 V3 V4
1 1 1 1 1
2 1 1 1 1
3 1 -1 -1 -1
4 1 -1 -1 -1
5 2 1 1 -1
6 2 1 1 -1
7 2 -1 -1 1
8 2 -1 -1 1
9 3 1 -1 1
10 3 1 -1 1
11 3 -1 1 -1
12 3 -1 1 -1
13 4 1 -1 -1
14 4 1 -1 -1
15 4 -1 1 1
16 4 -1 1 1

我的问题是:我想用这 4 列来得到 3 个新矩阵。
这些矩阵由以下列组成:12、13、14、23、24、34、123、124、134、234、1234。这里我用12来表示column 1 * column 2

第一个矩阵有 6 列:12, 13, 14, 23, 24, 34

    X1 X2 X3 X4 X5 X6 
1 1 1 1 1 1 1
2 1 1 1 1 1 1
3 -1 -1 -1 1 1 1
4 -1 -1 -1 1 1 1
5 2 2 -2 1 -1 -1
6 2 2 -2 1 -1 -1
7 -2 -2 2 1 -1 -1
8 -2 -2 2 1 -1 -1
9 3 -3 3 -1 1 -1
10 3 -3 3 -1 1 -1
11 -3 3 -3 -1 1 -1
12 -3 3 -3 -1 1 -1
13 4 -4 -4 -1 -1 1
14 4 -4 -4 -1 -1 1
15 -4 4 4 -1 -1 1
16 -4 4 4 -1 -1 1

第二个矩阵有 4 列:123, 124, 134, 234
最后一个矩阵只有一列:1234

有没有人有一些简单的代码来做到这一点?感谢大家的帮助。

最佳答案

我们可以创建一个小函数来完成此任务(假设 OP 在他的帖子中使用的符号类型相同)

create_prodmat <- function(mat, cols) {

index <- lapply(strsplit(cols, ""), as.numeric)

res <- do.call("cbind",
lapply(index, function(i) apply(mat[, i, drop = FALSE], 1, prod))
)
colnames(res) <- cols
res

}



mat <- matrix(rep(c(1, 2, 3), each = 4), ncol = 3)
mat

## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 1 2 3
## [3,] 1 2 3
## [4,] 1 2 3


cols1 <- c("12", "13", "23")
cols2 <- "13"

create_prodmat(mat, cols1)

## 12 13 23
## [1,] 2 3 6
## [2,] 2 3 6
## [3,] 2 3 6
## [4,] 2 3 6


create_prodmat(mat, cols2)

## 13
## [1,] 3
## [2,] 3
## [3,] 3
## [4,] 3

关于r - 使用原始矩阵得到几个新矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16313292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com