【问题标题】:Select elements column-wise from a matrix to create a list of new matrices in R从矩阵中按列选择元素以在 R 中创建新矩阵列表
【发布时间】:2021-08-04 16:27:03
【问题描述】:

假设我有维度为3 x n 的矩阵u, v, w,其中n > 3。所以u, v, w 的形式是:

> u
u11 u12 ... u1n
u21 u22 ... u2n
u31 u22 ... u3n

> v
v11 v12 ... v1n
v21 v22 ... v2n
v31 v22 ... v3n

> w
w11 w12 ... w1n
w21 w22 ... w2n
w31 w22 ... w3n

是否可以创建3 x 3 矩阵列表,这些矩阵在 R 中绑定 u, vw 列?我的意思是我想得到一个表格列表:

[[1]]
u11 v11 w11
u21 v21 w21
u31 v31 w31

[[2]]
u12 v12 w12
u22 v22 w22
u32 v32 w32

.
.
.


[[n]]
u1n v1n w1n
u2n v2n w2n
u3n v3n w32n

我试过了

> do.call(cbind, list=(u,v,w))

但这不起作用。

数据示例

set.seed(1)
u = matrix(rnorm(15), nrow = 3)
v = matrix(rnorm(15), nrow = 3)
w = matrix(rnorm(15), nrow = 3)

> u
           [,1]       [,2]      [,3]       [,4]       [,5]
[1,] -0.6264538  1.5952808 0.4874291 -0.3053884 -0.6212406
[2,]  0.1836433  0.3295078 0.7383247  1.5117812 -2.2146999
[3,] -0.8356286 -0.8204684 0.5757814  0.3898432  1.1249309
> v
            [,1]      [,2]        [,3]        [,4]       [,5]
[1,] -0.04493361 0.8212212  0.78213630  0.61982575 -1.4707524
[2,] -0.01619026 0.5939013  0.07456498 -0.05612874 -0.4781501
[3,]  0.94383621 0.9189774 -1.98935170 -0.15579551  0.4179416
> w
           [,1]        [,2]       [,3]       [,4]       [,5]
[1,]  1.3586796 -0.05380504 -0.3942900  0.7631757  0.6969634
[2,] -0.1027877 -1.37705956 -0.0593134 -0.1645236  0.5566632
[3,]  0.3876716 -0.41499456  1.1000254 -0.2533617 -0.6887557

期望的输出:

[[1]]
-0.6264538 -0.04493361  1.3586796
 0.1836433 -0.01619026 -0.1027877
-0.8356286  0.94383621  0.3876716

[[2]]
 1.5952808 0.8212212 -0.05380504
 0.3295078 0.5939013 -1.37705956
-0.8204684 0.9189774 -0.41499456

.
.
.

[[5]]
-0.6212406 -1.4707524  0.6969634
-2.2146999 -0.4781501  0.5566632
 1.1249309  0.4179416 -0.6887557

【问题讨论】:

  • @G.Grothendieck 示例添加

标签: r arrays list matrix


【解决方案1】:

您可以通过合并数据并使用array 设置维度来做到这一点:

ar <- array(rbind(u, v, w), dim = c(3, 3, ncol(u))) 

如果你想在list 中使用它,那么可以使用asplit,其中数组在第三维中拆分

ars <- asplit(ar, 3)
ars[c(1,2,5)]
# [[1]]
#            [,1]        [,2]       [,3]
# [1,] -0.6264538 -0.04493361  1.3586796
# [2,]  0.1836433 -0.01619026 -0.1027877
# [3,] -0.8356286  0.94383621  0.3876716
# 
# [[2]]
#            [,1]      [,2]        [,3]
# [1,]  1.5952808 0.8212212 -0.05380504
# [2,]  0.3295078 0.5939013 -1.37705956
# [3,] -0.8204684 0.9189774 -0.41499456
# 
# [[3]]
#            [,1]       [,2]       [,3]
# [1,] -0.6212406 -1.4707524  0.6969634
# [2,] -2.2146999 -0.4781501  0.5566632
# [3,]  1.1249309  0.4179416 -0.6887557

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 2021-06-20
    • 2013-11-24
    • 2019-09-04
    • 2020-11-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多