R-根据以数字开头的名称过滤列表

时间:2018-07-05 19:30:45

标签: r

我在R中有以下列表:

x <- list("a"="m","a2"="test","001"="test2","002"="test3")

$a
[1] "m"

$a2
[1] "test"

$`001`
[1] "test2"

$`002`
[1] "test3"

我想过滤此列表,以便它仅返回以数字开头的项目,即它将返回:

x$001 and x$002

2 个答案:

答案 0 :(得分:2)

Peter还没拿起它,所以我将发表评论作为答案。我们可以使用正则表达式模式"^[0-9]"查找以数字开头的字符串。将其应用于您的列表名称:

x[grepl("^[0-9]", names(x))]
# $`001`
# [1] "test2"
# 
# $`002`
# [1] "test3"

答案 1 :(得分:1)

不能完全确定您的意思,但有两种可能性可以利用您可以通过在单个方括号内提供向量来过滤列表的事实

如果您想要的是列表中包含数字的元素:

x[sapply(x, function(i){grepl("[0-9]", i)})]

如果您想要的是列表中具有可解释为数字的名称的元素:

x[!is.na(as.numeric(names(x)))]