首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于R中的条件设置嵌套列表的子集

基于R中的条件设置嵌套列表的子集
EN

Stack Overflow用户
提问于 2021-05-11 21:18:42
回答 2查看 22关注 0票数 1

我的嵌套列表如下所示:

代码语言:javascript
复制
  myList <- list(structure(list(id = 1:3, value = c(22, 33, 44), 
                                code = c("943", "943", "3a0"), 
                                product = c("Product 1", "Product 1", "Product 1")),
                           row.names = c(NA,-3L), 
                           class = c("data.table", "data.frame")), 
                 structure(list(id = 1:3, value = c(22, 33, 44), 
                                code = c("943", "94f", "3a0"), 
                                product = c("Product 2", "Product 2", "Product 2")),
                           row.names = c(NA,-3L), 
                           class = c("data.table", "data.frame")),
                 structure(list(id = 1:3, value = c(22, 33, 44), 
                                code = c("977", "943", "3a0"), 
                                product = c("Product 3", "Product 3", "Product 3")),
                           row.names = c(NA,-3L), 
                           class = c("data.table", "data.frame")))

我想删除所有具有多个列表元素的列表对象,这些列表元素具有相同的code。例如,第一个对象[[1]]有两个条目,其代码为943。我想删除整个对象,只保留那些没有任何副本的对象。

代码语言:javascript
复制
The expected outcome would therefore be:   myList <- list(
    structure(list(id = 1:3, value = c(22, 33, 44), 
                   code = c("943", "94f", "3a0"), 
                   product = c("Product 2", "Product 2", "Product 2")),
              row.names = c(NA,-3L), 
              class = c("data.table", "data.frame")),
    structure(list(id = 1:3, value = c(22, 33, 44), 
                   code = c("977", "943", "3a0"), 
                   product = c("Product 3", "Product 3", "Product 3")),
              row.names = c(NA,-3L), 
              class = c("data.table", "data.frame")))

我在考虑使用和lapply,但是我不能把它用到qwork上。

代码语言:javascript
复制
any(duplicated(myList[[1]]$code))

有什么想法或建议吗?

这看起来是一个相对简单的问题,但我想不出来

EN

Stack Overflow用户

发布于 2021-05-11 21:51:49

您的代码any(duplicated(myList[[1]]$code))可以在Filter中使用

代码语言:javascript
复制
Filter(function(x) !any(duplicated(x$code)), myList)

#[[1]]
#   id value code   product
#1:  1    22  943 Product 2
#2:  2    33  94f Product 2
#3:  3    44  3a0 Product 2

#[[2]]
#   id value code   product
#1:  1    22  977 Product 3
#2:  2    33  943 Product 3
#3:  3    44  3a0 Product 3

或者使用purrr

代码语言:javascript
复制
purrr::keep(myList, ~!any(duplicated(.x$code)))
purrr::discard(myList, ~any(duplicated(.x$code)))
票数 2
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67487584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档