【问题标题】:Sub-setting elements of a list in RR中列表的子设置元素
【发布时间】:2016-01-12 02:24:59
【问题描述】:

假设这是我的清单

a <- list(c(1,2,4))
a[[2]] <- c(2,10,3,2,7)
a[[3]] <- c(2, 2, 14, 5)

如何子集此列表以排除所有 2。我如何获得以下内容:

[[1]]
[1] 1 4

[[2]]
[1] 10  3  7

[[3]]
[1] 14  5

我目前的解决方案:

for(j in seq(1, length(a))){
  a[[j]] <- a[[j]][a[[j]] != 2]
}

但是,这种方法感觉有点不自然。我如何使用 apply 系列的函数做同样的事情?

谢谢!

【问题讨论】:

    标签: r list subset apply


    【解决方案1】:
    lapply(a, function(x) x[x != 2])
    #[[1]]
    #[1] 1 4
    #
    #[[2]]
    #[1] 10  3  7
    #
    #[[3]]
    #[1] 14  5
    

    使用lapply,您可以将子集应用于列表中的每个向量。使用的子集是x[x != 2]

    【讨论】:

      【解决方案2】:

      或者使用setdiff 循环使用listlapply

      lapply(a, setdiff, 2)
      #[[1]]
      #[1] 1 4
      
      #[[2]]
      #[1] 10  3  7
      
      #[[3]]
      #[1] 14  5
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-01-24
        • 2017-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-03
        相关资源
        最近更新 更多