Получился такой вектор:

codes <- c("3WC8" , "456" , "lev", "1")

Я хочу удалить "456" и "1", но НЕ хочу удалять числа "3WC8".

3
Anita 15 Окт 2014 в 19:58

3 ответа

Лучший ответ

Вы можете использовать gsub для удаления всех чисел из каждого элемента, затем nzchar для проверки / сохранения только ненулевых символьных элементов.

codes[nzchar(gsub("[0-9]+", "", codes))]
# [1] "3WC8" "lev" 
8
Rich Scriven 16 Окт 2014 в 00:28

Пытаться:

> codes[is.na(sapply(codes, as.numeric))]
[1] "3WC8" "lev" 

Или просто (как предлагает @akrun в комментариях):

> codes[is.na(as.numeric(codes))]
[1] "3WC8" "lev" 

Игнорируйте предупреждения в обоих кодах.

5
rnso 15 Окт 2014 в 21:16

Или вы могли бы сделать:

grep("^\\d+$", codes, value=TRUE, invert=TRUE)
#[1] "3WC8" "lev" 
3
akrun 16 Окт 2014 в 06:59