【问题标题】:How do I subset a list in R by every 3 indices?如何按每 3 个索引对 R 中的列表进行子集化?
【发布时间】:2014-11-22 15:15:12
【问题描述】:

我有一个list,它有 500 个元素,但我想获取每个第 3 个元素并将其保存到一个变量中。所以我希望将list[1]、list[4]、list[7]、list[10] 等保存到一个变量中。

我试过sub.list <- list[1:500, by = 3] 但这不起作用。

【问题讨论】:

  • 1:500 是seq(1, 500, by = 1) 的简写,: 是二元运算符,因此您不能将第三个参数 (b = 3) 传递给它

标签: r list indexing subset


【解决方案1】:
L <- as.list(1:500) # create a list

L[seq(1, length(L), 3)]
# or, use recycling
L[c(TRUE, FALSE, FALSE)]  

【讨论】:

    【解决方案2】:

    试试这个:

       sub.list<-myList[seq_along(myList)%%3==1]
    

    【讨论】:

      【解决方案3】:

      您也可以使用过滤器:

      L <- as.list(1:500) # create a list
      Filter(function(i) {i %% 3 == 1},seq_along(L))
      

      但是如果你有 NA 就不行。

      【讨论】:

      • 这将无法捕获任何NA 的列表元素。例如,将L &lt;- as.list(c(1:3, NA, 5:7)) 的结果与其他答案进行比较。
      猜你喜欢
      • 1970-01-01
      • 2021-04-30
      • 2012-08-06
      • 2016-01-14
      • 2018-02-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多