【问题标题】:Converting a vector to input of a matrix/array将向量转换为矩阵/数组的输入
【发布时间】:2018-08-14 18:55:28
【问题描述】:

说有

input=c(1,2)
mat=matrix(1:9,ncol=3)

如何将输入向量转换成可以调用的形式

mat[input]

并接收矩阵的 mat[1,2] 元素?我问是因为我想编辑长度为 n 的数组的元素。

【问题讨论】:

    标签: arrays r matrix


    【解决方案1】:

    简答:

    mat[t(input)]
    

    说明:

    Chambers 的书数据分析软件列出了 4 种方法来对矩阵进行子集化(即提取元素)。方法 #2 是上面发布的问题的答案。我将通过一个简短的示例发布钱伯斯的 4 种方式中的每一种。对于示例,我们将使用矩阵 m 并提取位于 (4,1) 和 (6,2) 位置的元素,它们的值分别为 104 和 116。

    m <- matrix(101:120, ncol=2)
    

    1.分别索引列和行:

    m[4,1]
    m[6,2]
    

    2. 使用 2 列矩阵作为单个索引参数

    k <- rbind(c(4,1), c(6,2))
    m[k]
    

    3.使用逻辑表达式

    m[1:10 == 4, 1:2 == 1]
    m[1:10 == 6, 1:2 == 2]
    #or
    m[1:20 %in% c(4,16)]
    

    4.使用向量子集,因为矩阵只是按列包装的向量

    m[c(4,16)]
    

    这是钱伯斯书页 201--202 的屏幕截图:

    【讨论】:

    • 感谢您的资源-这种方法也适用于我的数组问题。
    猜你喜欢
    • 2017-06-10
    • 2016-02-02
    • 2021-04-29
    • 2010-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多