【问题标题】:What is the data type by which R indexes arrays?R索引数组的数据类型是什么?
【发布时间】:2021-12-17 14:09:21
【问题描述】:

假设我有一些数组,但维度是先验未知的(不一定是 3,如下例所示)

A=array(1:24, dim=c(2,3,4))

我还有一个长度等于这个数组维度的输入向量

pos=c(2,1,3)

基于这个输入向量,我想返回

A[1:2,1:1,1:3]

如何自动执行此操作?换句话说,我必须将什么样的数据X 传递给A[],这样R 才能理解我想要什么。

例如,让X 成为一个列表是行不通的:

A[lapply(pos,function(x) 1:x)]

【问题讨论】:

    标签: r vector indexing subset


    【解决方案1】:
    pos = lapply(pos, seq)
    do.call(`[`, c(list(A), pos))
    
         [,1] [,2] [,3]
    [1,]    1    7   13
    [2,]    2    8   14
    

    【讨论】:

    • 感谢您的回答。我正在寻找独立于数组维度的东西。
    • 已编辑!请参阅here 了解更多信息。
    【解决方案2】:

    可以创建一个函数来为给定的数组和向量提取所需的矩阵。

    A = array(1:24, dim = c(2,3,4))
    
    pos = c(2,1,3)
    
    array_extractor = function(array, vector) {
    
       result = array[1:vector[1], 1:vector[2], 1:vector[3]]
       result
    
    }
    
    array_extractor(A, pos)
    

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 1970-01-01
      • 2016-11-04
      • 2019-07-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 2013-11-04
      相关资源
      最近更新 更多