子集列表以删除字符(0)元素

问题描述 投票:-2回答:2

我想从列表列表中删除具有character(0)的列表元素(未命名)。以下是示例输出。请建议我该怎么做。

[[984]]
character(0)

[[985]]
character(0)

[[986]]
[1] "Mazhar"       "LFG"          "Comments"     "coding"       "contribution" "quality"     

[[987]]
[1] "Comments" "good"    

[[988]]
[1] "Comments" "Quality"  "Good"     "team"    

[[989]]
 [1] "experience has vast" "Comments"            "effective"           "experience"         
 [5] "technologies"        "lead"                "team members"        "members"            
 [9] "team"                "good"               

[[990]]
[1] "bring the process" "processes"         "bring"             "guidelines"        "standards"        
[6] "handling"          "Comments"          "project"          

[[991]]
[1] "AEM"            "AEM though new"

[[992]]
[1] "communication"

[[993]]
character(0)

[[994]]
[1] "day"  "work"
r
2个回答
1
投票

为了消除character(0)的列表元素,我们可以否定identical()

list[!sapply(list, identical, character(0))]

其中list是你的清单。

可重复的例子:

x <- list(character(0), 1, 2, character(0))
x[!sapply(x, identical, character(0))]
# [[1]]
# [1] 1
#
# [[2]]
# [1] 2

1
投票

我们可以使用lengths来创建逻辑向量。具有length的元素的character(0)将为0.因此,进行相等比较可获得用于对list进行子集化的逻辑向量

out <- lst[lengths(lst)!=0]

或者另一种选择是Filter

Filter(length, lst)

data

lst <- list(character(0), letters[1:3], character(0), letters[1:2])
© www.soinside.com 2019 - 2024. All rights reserved.