Neu*_*ril 5 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"))
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种优雅的方法来删除 nchar=0 的内部元素,例如第一个列表中的第三个元素(值为“”)。我努力了:
l[lapply(l,length)>0]
Run Code Online (Sandbox Code Playgroud)
但这不适用于内部元素长度,而是适用于外部列表元素长度。预期输出是:
list(c("cat1", "cat6"), c("cat5", "cat3", "cat4"), c("cat6",
"cat4"), c("cat5", "cat1", "cat2", "cat4"), c("cat6", "cat3",
"cat2"))
Run Code Online (Sandbox Code Playgroud)
任何帮助表示赞赏
我们可以使用nzchar为非空白/空白元素创建 TRUE/FALSE 逻辑索引,然后对list元素进行子集化。
lapply(l, function(x) x[nzchar(x)])
Run Code Online (Sandbox Code Playgroud)
或者另一种选择是从每个元素中setdiff删除该元素。''list
lapply(l, setdiff, '')
Run Code Online (Sandbox Code Playgroud)
该length函数会计数'',因此对于删除''.