R - отфильтровать список по именам, которые начинаются с числового значения - PullRequest
0 голосов
/ 05 июля 2018

У меня есть следующий список в 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 голосов
/ 05 июля 2018

Питер еще не поднял его, поэтому я отправлю свой комментарий в качестве ответа. Мы можем использовать шаблон регулярного выражения "^[0-9]", чтобы найти строки, которые начинаются с числа. Применяя это к именам вашего списка:

x[grepl("^[0-9]", names(x))]
# $`001`
# [1] "test2"
# 
# $`002`
# [1] "test3"
0 голосов
/ 05 июля 2018

Не совсем точно, что вы имеете в виду здесь, но есть две возможности, которые используют тот факт, что вы можете фильтровать список, поставляя вектор в одинарных скобках

Если вам нужны элементы списка, в которых есть цифры:

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

Если вам нужны элементы списка, которые имеют имя, которое можно интерпретировать как число:

x[!is.na(as.numeric(names(x)))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...