我有一个名单
> x <- c("Test t", "Cuma Nama K", "O", "Test satu dua t")
> name <- strsplit(x, " ")
> name
[[1]]
[1] "Test" "t"
[[2]]
[1] "Cuma" "Nama" "K"
[[3]]
[1] "O"
[[4]]
[1] "Test" "satu" "dua" "t"
如何过滤列表以便它可以变成这样? 我试图找出如何过滤具有nchar&gt;的列表1
> name
[[1]]
[1] "Test"
[[2]]
[1] "Cuma" "Nama"
[[4]]
[1] "Test" "satu" "dua"
答案 0 :(得分:2)
lapply(name, function(x) x[nchar(x)>1])
结果:
[[1]]
[1] "Test"
[[2]]
[1] "Cuma" "Nama"
[[3]]
character(0)
[[4]]
[1] "Test" "satu" "dua"
答案 1 :(得分:1)
我们可以遍历列表元素,将nchar
大于1的元素子集化,并使用Filter
删除0元素
Filter(length,lapply(name, function(x) x[nchar(x) >1 ]))
#[[1]]
#[1] "Test"
#[[2]]
#[1] "Cuma" "Nama"
#[[3]]
#[1] "Test" "satu" "dua"
如果我们想从字符串中删除带有一个字符的单词,我们也可以在不拆分的情况下执行此操作
setdiff(gsub("(^| ).( |$)", "", x), "")
#[1] "Test" "Cuma Nama" "Test satu dua"