首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按名称模式在R中选择列表元素

按名称模式在R中选择列表元素
EN

Stack Overflow用户
提问于 2018-07-23 17:13:01
回答 1查看 7.4K关注 0票数 10

我有一份清单

代码语言:javascript
复制
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‘风格。

任何帮助都将不胜感激。问候

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-23 17:16:07

使用来自grepbase R更容易。使用grepl获取一个逻辑索引,方法是检查patternlistnames上的“城市”,然后使用它对list元素进行子集

代码语言:javascript
复制
places[grepl("cities", names(places))]

或者使用tidyverse而不是grepl,使用str_detect (来自stringr)和keep (来自purrr)满足条件的list元素

代码语言:javascript
复制
library(tidyverse)
names(places) %>% 
      str_detect('cities') %>%
      keep(places, .)

正如@Frank在评论中提到的,tbldata.frame可能更便于分析

代码语言:javascript
复制
data_frame(nm = names(places), places) %>% 
     unnest %>% 
     filter(str_detect(nm, "cities"))

或在base R

代码语言:javascript
复制
subset(stack(places), grepl("cities", ind))
票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51484102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档