如何在R中删除列表的元素?

时间:2019-06-14 14:33:29

标签: r list igraph

我有一个igraph对象,即我使用igraph库创建的对象。该对象是一个列表。此列表的某些组件的长度为2。我想删除所有这些组件。

IGRAPH clustering walktrap, groups: 114, mod: 0.79
+ groups:
  $`1`
     [1] "OTU0041"             "OTU0016"             "OTU0062"            
     [4] "OTU1362"             "UniRef90_A0A075FHQ0" "UniRef90_A0A075FSE2"
     [7] "UniRef90_A0A075FTT8" "UniRef90_A0A075FYU2" "UniRef90_A0A075G543"
    [10] "UniRef90_A0A075G6B2" "UniRef90_A0A075GIL8" "UniRef90_A0A075GR85"
    [13] "UniRef90_A0A075H910" "UniRef90_A0A075HTF5" "UniRef90_A0A075IFG0"
    [16] "UniRef90_A0A0C1R539" "UniRef90_A0A0C1R6X4" "UniRef90_A0A0C1R985"
    [19] "UniRef90_A0A0C1RCN7" "UniRef90_A0A0C1RE67" "UniRef90_A0A0C1RFI5"
    [22] "UniRef90_A0A0C1RFN8" "UniRef90_A0A0C1RGE0" "UniRef90_A0A0C1RGX0"
    [25] "UniRef90_A0A0C1RHM1" "UniRef90_A0A0C1RHR5" "UniRef90_A0A0C1RHZ4"
  + ... omitted several groups/vertices

例如,这个:

> a[[91]]
[1] "OTU0099"                "UniRef90_UPI0005B28A7E"

我尝试了这个,但是没有用:

a[lapply(a,length)>2]

有帮助吗?

1 个答案:

答案 0 :(得分:3)

由于您没有提供任何可复制的数据或示例,因此我不得不生成一些虚拟数据:

https

如果要删除长度完全等于2的项目(问题尚不清楚),则最后一行应替换为:

# create dummy data
a <- list(x = 1, y = 1:4, z = 1:2)

# remove elements in list with lengths greater than 2:
a[which(lapply(a, length) > 2)] <- NULL