R从列表列表中删除空(nchar=0)元素
我有一个列表/向量列表:R从列表列表中删除空(nchar=0)元素,r,list,nested-lists,sapply,R,List,Nested Lists,Sapply,我有一个列表/向量列表: list(c("cat1", "cat6", ""), c("cat5", "cat3", "cat4"), c("cat6", "cat4", ""), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3", "cat2")) 我正在寻找一种优雅的方法来删除nchar=0的内部元素,就像第一个列表中的第三个元素(值为“”)。 我试过: l[lapply(l,length)>0] 但这并不适用于内部元素长
list(c("cat1", "cat6", ""), c("cat5", "cat3", "cat4"), c("cat6",
"cat4", ""), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3",
"cat2"))
我正在寻找一种优雅的方法来删除nchar=0的内部元素,就像第一个列表中的第三个元素(值为“”)。
我试过:
l[lapply(l,length)>0]
但这并不适用于内部元素长度,而是适用于外部列表元素长度。
预期产出为:
list(c("cat1", "cat6"), c("cat5", "cat3", "cat4"), c("cat6",
"cat4"), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3",
"cat2"))
我们可以使用
nzhar
为非空白/空白元素创建TRUE/FALSE逻辑索引,然后将列表
元素子集
lapply(l, function(x) x[nzchar(x)])
lapply(l, setdiff, '')
或者另一个选项是setdiff
,从每个列表
元素中删除'
元素
lapply(l, function(x) x[nzchar(x)])
lapply(l, setdiff, '')
length
函数将计数'
,因此它在删除'
时不会有太大帮助。您可以尝试sapply(l,函数(x)x[nchar(x)>0])