【问题标题】:How can I make an array of two matrices with a vector?如何用一个向量制作一个由两个矩阵组成的数组?
【发布时间】:2021-01-18 17:54:31
【问题描述】:

从包含元素 1 到 20 的向量生成一个由两个 3X4 矩阵组成的数组。按列填充。

  1. 为数组添加合适的行名、列名和矩阵名。
  2. 使用 apply 函数,求数组中列元素的总和。
  3. 在一行代码中,找到数组中每个矩阵的平均值。结果应该是一个由两个数字组成的向量,每个矩阵一个。

以上是我要解决的问题。我试过的是下面的代码,

y <- array(1:20, dim = c(3,4,2))
print(y)

似乎它有效。如何在这里定义按列填充?另外,如何使用单个向量添加名称?通常应该至少有两个这样的向量,

result <- array(c(vector1, vector2), dim = c(3,3,2))

【问题讨论】:

    标签: r arrays matrix


    【解决方案1】:

    这是介绍性 R,OP 应阅读 An Introduction to R,文件 R-intro.pdf,随 R 的每个安装一起提供。

    为了按列填充矩阵,没有什么特别需要做的,R 已经按列优先顺序填充它们。
    请注意,3*4*2 == 24 并且由于只接受值 1:20,因此最后 4 个值被回收。

    y <- array(1:20, dim = c(3,4,2))
    dimnames(y) <- list(paste("row", 1:3, sep = "_"),
                        paste("col", 1:4, sep = "_"),
                        paste("matrix", 1:2, sep = "_"))
    y
    #, , matrix_1
    #
    #      col_1 col_2 col_3 col_4
    #row_1     1     4     7    10
    #row_2     2     5     8    11
    #row_3     3     6     9    12
    #
    #, , matrix_2
    #
    #      col_1 col_2 col_3 col_4
    #row_1    13    16    19     2
    #row_2    14    17    20     3
    #row_3    15    18     1     4
    

    现在列按第三维求和。

    apply(y, 3, colSums)
    #      matrix_1 matrix_2
    #col_1        6       42
    #col_2       15       51
    #col_3       24       40
    #col_4       33        9
    

    以及每个矩阵的平均值。

    apply(y, 3, mean)
    #matrix_1 matrix_2 
    # 6.50000 11.83333 
    

    【讨论】:

      猜你喜欢
      • 2011-09-17
      • 2014-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      相关资源
      最近更新 更多