对两个不同结构的列表使用相同的代码按名称获取相同的列

Gor*_*orp 5 r list

我有两个不同结构的列表。在一个函数中,我想获得一个在两个列表中具有相同名称的列。有没有通用的方法来处理这个问题?

  list_1_1_1 <- list(list(list(tibble::tibble("a" = c(1, 2), "b"=c(3, 4))), list("a"=c(1, 2))))
  list_1_1_1
  # Call column called b
  list_1_1_1[[1]][[1]][[1]]$b

  
  list_1_1 <- list(list(tibble::tibble("a" = c(1, 2), "b"=c(3, 4))), list("a"=c(1, 2)))
  list_1_1
  # Call column called b
  list_1_1[[1]][[1]]$b
Run Code Online (Sandbox Code Playgroud)

我想获得名为 b 的列,它具有适用于两种不同情况/示例的同一行代码,这可能吗?提前致谢。

jay*_*.sf 4

也许是这样的。

foo <- function(l, pattern) {
  u <- unlist(l)
  unname(u[grep(pattern, names(u))])
}

foo(list_1_1_1, "b")
# 3 4

foo(list_1_1, "b")
# 3 4
Run Code Online (Sandbox Code Playgroud)