如何在R语言中通过嵌套列表筛选DataFrame?
问题描述
我有一个需要通过嵌套列表筛选的DataFrame,实际使用的嵌套列表包含约12个子列表。以下是示例数据与代码:
示例表格
| ColumnA | ColumnB |
|---|---|
| 1 | 233 |
| 2 | 234 |
| 3 | 235 |
| 4 | 125 |
| 5 | 188 |
| 6 | 189 |
| 7 | 101 |
| 8 | 23 |
示例代码
listA <- list(233,234,235) listB <- list(188,189) listC <- list(listA,listB) df2 <- df1 %>% filter(ColumnB %in% listC)
之前使用%in%筛选非嵌套列表有效,但该方法对嵌套列表无效,请问有无无需逐个筛选子列表的方法?
解决方法
%in%只能识别一维的向量或列表,嵌套的多维列表无法直接匹配。你只需要先把嵌套列表扁平化成一维向量,再用%in%筛选即可,无需逐个处理子列表。
具体实现代码
# 把嵌套列表listC扁平化 flat_list <- unlist(listC) # 用扁平化后的列表筛选DataFrame df2 <- df1 %>% filter(ColumnB %in% flat_list)
效果说明
执行后df2会保留ColumnB值为233、234、235、188、189的行,也就是你需要的筛选结果。如果你的嵌套列表层级更深(比如超过两层),unlist()依然能直接处理,不需要额外调整。
内容的提问来源于stack exchange,提问作者LeeW
相关产品推荐
相关产品推荐

