r - R:循环列表列表以检索包含命中的子列表的标题
问题描述
我在 R 中有一个列表列表。列表列表中的每个子列表都包含多个元素。这些子列表不一定都具有相同的长度。所有子列表都有一个特定的标题名称。像这样:
#create list of lists
vector1 = c("apple","banana","cherry")
vector2 = c("banana","date","fig")
vector3 = c("fig","jackfruit","mango","plum")
listoflists = list(vector1 , vector2, vector3)
names(listoflists) = c("listA", "listB", "listC")
列表列表如下所示:
listoflists
$listA
[1] "apple" "banana" "cherry"
$listB
[1] "banana" "date" "fig"
$listC
[1] "fig" "jackfruit" "mango" "plum"
接下来,我有一个向量,其中包含也可以在子列表中找到的元素。像这样:
wanted = c("apple","banana","fig")
wanted
[1] "apple" "banana" "fig"
对于想要的向量中的每个元素,我想提取包含此特定元素的列表列表中每个子列表的标题名称。对于此处提供的示例,输出应如下所示:
#desired output
apple listA
banana listA listB
fig listB listC
我想过把它放到一个 for 循环中来获得这样的东西:
output_list = list()
for (i in wanted){
output = EXTRACT LIST HEADER WHEN i IS PRESENT IN SUBLIST
output_list[[i]] = output
}
但是,尚不清楚我是否可以,如果可以,如何循环遍历列表列表以仅提取那些包含 vector Want 中元素的子列表的标题名称。我研究了使用该unlist
功能,但这似乎对这个问题没有用。我查看了 stackoverflow 以及其他论坛,但找不到任何概述类似问题的问题。因此,如果有人能指出我解决这个问题的正确方向,那将非常有帮助。
已经谢谢了!
解决方案
这是另一个基本 R 选项
u <- unlist(listoflists)
sapply(wanted, function(x) rep(names(listoflists),lengths(listoflists))[u %in% x])
这使
$apple
[1] "listA"
$banana
[1] "listA" "listB"
$fig
[1] "listB" "listC"
推荐阅读
- node.js - 遇到奇怪的语法错误 Unexpected token * error
- vue.js - 如何在 vuetify 中的同一行中的卡之间添加空格
- angular - 尝试运行项目Angular 6时出现node-pre-gyp和grpc问题
- python - 用于 Python 脚本的 Crontab 每 5 分钟
- typescript - 打字稿/量角器。循环和 ElementFinderArray 并解决承诺
- sql - SQL Server:单个更新多个属性
- anaconda - 找不到 cplex 可执行文件
- javascript - 对于(Android/iOS)WebView 混合应用程序,我应该使用哪个 OAuth 流程以及在哪里存储令牌?
- bash - 我如何在 bash 中读取两个文件来安排和填充缺失的字段
- python-3.x - 当列不存在时如何在数据中添加列?