我有一个包含可迭代元素的列表:

my_list <- list(
  A = list(apple = 1:3, orange = "abc"),
  B = tibble(banana = "qwerty", strawberry = 1:5),
  C = data.frame(blueberry = "xyz", mango = "something")
)

我想go 哪里,比如说,"蓝莓".因为,它是属于名为C的data.frame的列的名称.所以输入"蓝莓",我应该得到"C".

我编写了以下函数,但我想知道是否有更优雅(高效)的解决方案?

find_list <- function(name, my_list) {
  idx <- which(sapply(my_list, function(x) name %in% names(x)))
  if (length(idx) > 0) {
    return(names(my_list)[idx])
  } else {
    return(NULL)
  }
}

# Test
print(find_list("strawberry", my_list))  # Prints "B"
print(find_list("mango", my_list))       # Prints "C"
print(find_list("apple", my_list))       # Prints "A"
print(find_list("nonexistent", my_list))  # Prints NULL if the name is not found

推荐答案

您可以使用这种方法,并将其转换为函数.

gsub("\\..+", "", grep("blueberry", names(unlist(my_list)), value = TRUE))

[1] "C"

unlist会生成用点分隔的嵌套名称,因此第一个元素是您要查找的顶级列表.

R相关问答推荐

单击 map 后,将坐标复制到剪贴板

R中具有gggplot 2的Likert图,具有不同的排名水平和显示百分比

如何在RMarkdown LaTex PDF输出中包含英语和阿拉伯语?

警告:lmdif:info = 0. nls. lm()函数的输入参数不正确

R for循环返回到先前值

如何在分组条形图中移动相关列?

可以替代与NSE一起使用的‘any_of()’吗?

根据类别合并(汇总)某些行

在列表中排列R数据框中的列顺序

安全地测试文件是否通过R打开

如何使这些react 表对象相互独立?

在gggraph中显示来自不同数据帧的单个值

使用geom_iles在一个切片中包含多个值

手动指定从相同数据创建的叠加图的 colored颜色

使用R将简单的JSON解析为嵌套框架

防止在更新SHINY中的Reactive Value的部分内容时触发依赖事件

将统计检验添加到GGPUBR中的盒图,在R

如何构建一个for循环来循环处理动物ID?

禁用时,SelecizeInput将变得不透明

带查找数据的FCT_REORDER.帧