【问题标题】:Selecting specific sequence of rows from a matrix从矩阵中选择特定的行序列
【发布时间】:2022-01-05 09:17:19
【问题描述】:

我有一个 2000 x 20 阶的数据矩阵,我想从矩阵中选择整行的特定顺序,例如 1st,7th,8th,14th,15th,21th,22th,就是这样一个序列行数,直到最后 2000 行。

[1, 7, 8, 14, 15, 21, 22, ...]

手动选择这样的序列非常困难,在 R 中是否有替代方法来执行相同的任务? for 循环是否有助于解决此类问题。

【问题讨论】:

  • 保留原始序列和更新序列可能会很好,因为您已经有 2 个很好的答案来解决所提出的问题。
  • 是的,你是对的,但我在顺序上犯了一个错误,这就是我更新它的原因。

标签: r dataframe matrix subset sequence


【解决方案1】:

使用更新的问题数据,例如:

cumsum(rep(c(1,6), 2000/7))
#  [1]    1    7    8   14   15
#  ...
#[566] 1981 1982 1988 1989 1995

由于您的模式在 2000 年之前是 +1/+6,因此您可以 rep吃这两个值 c(1,6) 的次数与 sum(c(1,6)) 进入 2000 的次数一样多,然后取一个 cumulative @987654326 @。

【讨论】:

    【解决方案2】:

    试试这个

    mat[sort(c(k <- seq(6, 2000, by = 7), k + 1)),]
    

    【讨论】:

      【解决方案3】:

      您可以先定义您的序列,例如使用sequence,然后使用 [] 进行子集化。

      n = 2000 / 7 
      s = sequence(nvec = c(1, rep(2,n)), from = c(1, 7*1:n))
      # s
      # [1]    1    7    8   14   15   21   22   28   29   35   36   42   43   49   50   56   57   63   64   70   71   ...
      
      yourMatrix[s, ]
      

      sequence 创建一个长度为nvec 和起点为from 的序列。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-06-28
        • 2015-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-08
        相关资源
        最近更新 更多