var1是一个列表:
var1 <- list(c("tall tree", "fruits", "star"),
c("tree tall", "pine tree", "tree pine", "black forest", "water"),
c("apple", "orange", "grapes"),
c("ancient pine tree", "all trees"))
我需要从包含术语&#34; pine&#34;的列表中完全删除这些元素。
所需答案是一个清单:
[[1]]
[1] "tall tree" "fruits" "star"
[[2]]
[1] "apple" "orange" "grapes"
由于
答案 0 :(得分:13)
你可以在这里试试$ionicConfigProvider.views.swipeBackEnabled(false);
Filter
答案 1 :(得分:6)
var1[lapply(var1,function(x) length(grep("pine",x,value=FALSE))) == 0]
答案 2 :(得分:3)
这是一个老问题,但我想我会添加另一个选项。 stringr包中的“str_”函数非常适合列表中的模式匹配。
如果您要查找匹配的所有列表条目,您可以使用:
library(stringr)
str_subset(var1,pattern="pine")
但由于您希望不匹配的列表条目,您可以使用:
library(stringr)
var1[!str_detect(var1,pattern="pine")]
str_detect(list,pattern)
返回逻辑列表,因此您可以使用inverse(!)将列表子集化为与模式不匹配的条目。
答案 3 :(得分:0)
或者可以执行:
var2<-lapply(var1,function(x) if(all(grepl(pattern = "^(?!.*pine).*$",x,perl = T)==T)) return(x) else NA);var2[!is.na(var2)]