向量列表中的grepl和子集?

向量列表中的grepl和子集?,r,grepl,R,Grepl,我从下面的代码生成了一个列表 df <- USArrests df <- na.omit(df) df <- scale(df) d <- dist(df, method = "euclidean") # Hierarchical clustering using Complete Linkage hc1 <- hclust(d, method = "complete" ) library(dendextend) dend15 <- d %>% hc

我从下面的代码生成了一个列表

df <- USArrests
df <- na.omit(df)
df <- scale(df)
d <- dist(df, method = "euclidean")

# Hierarchical clustering using Complete Linkage
hc1 <- hclust(d, method = "complete" )

library(dendextend)
dend15 <- d %>% hclust(method = "average") %>% as.dendrogram
dend15 %>% plot

subtrees <- partition_leaves(dend15)

lappy
浏览列表并使用
grep

lapply(subtrees, grep, pattern = "Maine", value = TRUE)
您可能希望从中删除空列表,这可以使用
Filter

Filter(function(x) length(x) > 0, lapply(subtrees, grep, pattern = "Maine", value = TRUE))

#[[1]]
#[1] "Maine"

#[[2]]
#[1] "Maine"

#[[3]]
#[1] "Maine"

#[[4]]
#[1] "Maine"

#[[5]]
#[1] "Maine"

#[[6]]
#[1] "Maine"

tidyverse
方法可能是

purrr::map(subtrees, ~stringr::str_subset(.x, "Maine"))

要获得匹配列表的索引,我们可以使用
grepl
which

which(sapply(subtrees, function(x) any(grepl("Maine", x))))
#[1] 1 2 3 4 6 7

谢谢有没有办法返回匹配的索引号?我最终想做的是提取所有包含关键字Maine的值。@Ahdee你是说
哪个(sappy(子树,函数(x)any(grepl(“Maine”,x)))
which(sapply(subtrees, function(x) any(grepl("Maine", x))))
#[1] 1 2 3 4 6 7