删除少于3个或超过6个字符的单词

时间:2018-05-04 15:08:23

标签: r list

我这里有一小串字符串:

> dput(test)
list(c("jason", "s", "jasonnnnnnnnn"))

我想摆脱某些短片(少于3个字符)和 长(超过6个字符)的单词。我试过这段代码无济于事。

test[[ii]] <- 
      lapply(test[[ii]], function(x) x[-(nchar(x < 5 | x > 10))])

2 个答案:

答案 0 :(得分:4)

x <- list(c("jason", "s", "jasonnnnnnnnn"))
lapply(x, function(x) x[nchar(x) %in% 3:6])
[[1]]
[1] "jason"

重要的是格雷戈尔已经指出了用整数进行子集化(你可以使用-)和逻辑的区别。

答案 1 :(得分:2)

如果我们使用|运算符,则否定(!)并对3:6内的单词进行子集

lapply(test, function(x) x[!(nchar(x) < 3 | nchar(x) > 6)])
#[[1]]
#[1] "jason"