Удаление элементов, содержащих любые алфавитные символы из списка в R - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть список со следующими элементами:

c("1",  "2", "3", "abc",  "1as")

Как мне удалить элементы, содержащие алфавиты, из списка?Например, для приведенного выше примера я бы хотел получить ("1" "2" "3") в качестве окончательного списка, но 1,2,3 - все строковые переменные в этом случае.

Ответы [ 3 ]

0 голосов
/ 09 февраля 2019

Вот как

a <- c("1",  "2", "3", "abc",  "1as")
a[!grepl("[[:alpha:]]", a)]
# [1] "1" "2" "3"
0 голосов
/ 09 февраля 2019

Немного дольше, но вам не нужно использовать grep для решения проблемы.Вы можете просто преобразовать, и те, которые преобразованы (не NA), - это те, которые вы хотите сохранить:

test<-c("1","2","3","abc","1as")
test_num<-as.numeric(test)
test_num_clean<-test_num[!is.na(test_num)]

А если вы предпочитаете строки:

test_str<-as.character(test_num_clean)
0 голосов
/ 09 февраля 2019

Вот одно решение, использующее grep для идентификации записей с [: alpha:] записей и их отрицания:

x <- c("1",  "2", "3", "abc", "1as")

x[-grep("[:alpha:]", x)]
#> [1] "1" "2" "3"

Создано в 2019-02-08 представьте пакет (v0.2.1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...