我有一份清单
places <- list(
'cities-1' = c('Madrid', 'Valencia', 'Barcelona'),
'countries-1' = c('España', 'Portugal', 'Francia'),
'cities-2' = c('Alicante', 'San Sebastian', 'Lugo'),
'countries-2' = c('Italia', 'Grecia', 'Alemania')
)我想创建一个新的列表,其中包含这些元素,它们的名称实现了“城市”的模式。如果可能的话,我想使用'tidyverse‘风格。
任何帮助都将不胜感激。问候
发布于 2018-07-23 17:16:07
使用来自grep的base R更容易。使用grepl获取一个逻辑索引,方法是检查pattern在list的names上的“城市”,然后使用它对list元素进行子集
places[grepl("cities", names(places))]或者使用tidyverse而不是grepl,使用str_detect (来自stringr)和keep (来自purrr)满足条件的list元素
library(tidyverse)
names(places) %>%
str_detect('cities') %>%
keep(places, .)正如@Frank在评论中提到的,tbl或data.frame可能更便于分析
data_frame(nm = names(places), places) %>%
unnest %>%
filter(str_detect(nm, "cities"))或在base R中
subset(stack(places), grepl("cities", ind))https://stackoverflow.com/questions/51484102
复制相似问题