【问题标题】:Extract 100 sections from a vector从向量中提取 100 个部分
【发布时间】:2017-06-25 18:58:05
【问题描述】:

我有一个长度为 1000 的向量。它包含 100 名参与者的(数字)调查答案,因此每个参与者有 10 个答案。我想删除每个参与者的前三个值,以创建一个长度为 700 的新向量(仅包括问题 4-10 的答案)。

我只知道如何提取向量的每个第n个值,但不知道如何解决上述问题。

vector <- seq(1,1000,1)

预期输出:

4 5 6 7 8 9 10    14 15 16 17 18 19 20    24 ...

【问题讨论】:

    标签: r vector


    【解决方案1】:

    使用矩阵首先构造然后展平是一种方法。另一种有点类似的方法是使用我所说的“逻辑模式索引”:

    head(             # just showing the first couple of "segments"
      vector[ c( rep(FALSE, 3), rep(TRUE, 10-3) ) ], 
        15)
     [1]  4  5  6  7  8  9 10 14 15 16 17 18 19 20 24
    

    此方法也可以在[ 的两个参数版本中使用,以使用逻辑模式索引选择行或列。这是因为 R 循环使用了逻辑索引。

    【讨论】:

    • 也感谢您的回答。抱歉,我不能批准这两个答案。
    【解决方案2】:

    感谢您提供示例数据,基于这些数据可以重现此线程。这是一种解决方案

    c(matrix(vector, 10)[4:10, ])
    

    我们首先将向量转换为一个有 10 行的矩阵,这样每一列都属于一个参与者。然后使用行子集删除前三行。最后将矩阵再次展平为向量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-02-23
      • 2010-10-04
      • 2015-11-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多