我有一个列表/载体列表:
list(c("cat1", "cat6", ""), c("cat5", "cat3", "cat4"), c("cat6",
"cat4", ""), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3",
"cat2"))
我正在寻找一种优雅的方法来删除内部元素,使用nchar = 0,就像第一个列表中的第3个元素一样(值为“”)。 我试过了:
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"))
任何帮助表示赞赏
答案 0 :(得分:3)
我们可以使用nzchar
为非空白/空白元素创建TRUE / FALSE的逻辑索引,然后对list
元素进行子集化。
lapply(l, function(x) x[nzchar(x)])
或其他选项setdiff
可从每个''
元素中删除list
元素。
lapply(l, setdiff, '')
length
功能会计算''
,因此在删除''
时没有多大帮助。