У меня есть следующий вектор:R: удалить номера вектора
codes <- c("3WC8" , "456" , "lev", "1")
Я хочу, чтобы удалить "456"
и "1"
, но я не хочу, чтобы удалить номера из "3WC8"
.
У меня есть следующий вектор:R: удалить номера вектора
codes <- c("3WC8" , "456" , "lev", "1")
Я хочу, чтобы удалить "456"
и "1"
, но я не хочу, чтобы удалить номера из "3WC8"
.
Вы можете использовать gsub
, чтобы удалить все числа из каждого элемента, затем nzchar
, чтобы проверить/сохранить только ненулевые символы.
codes[nzchar(gsub("[0-9]+", "", codes))]
# [1] "3WC8" "lev"
Try:
> codes[is.na(sapply(codes, as.numeric))]
[1] "3WC8" "lev"
или просто (как это было предложено @akrun в комментариях):
> codes[is.na(as.numeric(codes))]
[1] "3WC8" "lev"
Игнорировать предупреждения в обоих кодексах.
Или вы могли бы сделать:
grep("^\\d+$", codes, value=TRUE, invert=TRUE)
#[1] "3WC8" "lev"
Я подтверждаю, что это работает. +1 –
Я изучил хорошую технику. Иди гигантов! +1 – jazzurro
+1 для использования 'nzchar'! –