R中的过滤列表

Niy*_*yas 0 r list

我有一个清单

  A <- c(1,2,3,4,5,6,7,8,9,10)
  B <- c("a" ,"b", "c" ,"d","b" ,"f" ,"g" ,"a" ,"b" ,"a")
  C <- c(25, 26, 27, 28, 29, 30, 31, 32, 10, 15)
  mylist <- list(A,B,C)
  mylist  
  [[1]]
  [1]  1  2  3  4  5  6  7  8  9 10

  [[2]]
  [1] "a" "b" "c" "d" "b" "f" "g" "a" "b" "a" 

  [[3]]
  [1] 25 26 27 28 29 30 31 32 10 15
Run Code Online (Sandbox Code Playgroud)

我想选择列表中的所有组件 A、B、C,其中第二个组件 B 的值为 "a" 或 "b" 。

样本输出

  mylist  
  [[1]]
  [1]  1  2  6  8  9 10

  [[2]]
  [1] "a" "b" "b" "a" "b" "a" 

  [[3]]
  [1] 25 26 29 32 10 15
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?请注意,每个组件都有相同的长度。

Col*_*vel 5

要继续使用 a list,为什么不简单地:

lapply(mylist, `[`, is.element(B, letters[1:2]))
#[[1]]
#[1]  1  2  5  8  9 10

#[[2]]
#[1] "a" "b" "b" "a" "b" "a"

#[[3]]
#[1] 25 26 29 32 10 15
Run Code Online (Sandbox Code Playgroud)