Как удалить числовые шаблоны определенной длины из строки в R

Скажем, у меня есть строка -

some_string <- "this is a string with some numbers 9639998 21057535 1000 2021 2022"

Я хотел бы удалить числовые шаблоны длиной 7 символов, длиной 8 символов и длиной 4 символа, ЗА ИСКЛЮЧЕНИЕМ, если это 1000. По сути, я хочу получить следующий результат:

"this is a string with some numbers 1000"
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
Четыре эффективных способа центрирования блочных элементов в CSS
Четыре эффективных способа центрирования блочных элементов в CSS
У каждого из нас бывали случаи, когда нам нужно отцентрировать блочный элемент, но мы не знаем, как это сделать. Даже если мы реализуем какой-то...
2
0
27
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Используйте gsub здесь с шаблоном регулярного выражения \b(?:\d{7,8}|(?!1000\b)\d{4})\b:

some_string <- "this is a string with some numbers 9639998 21057535 1000 2021 2022"
output <- gsub("\\b(?:\\d{7,8}|(?!1000\\b)\\d{4})\\b", "", some_string, perl=TRUE)
output

[1] "this is a string with some numbers   1000  "

На самом деле, лучшая версия, которая убирает свободные пробелы, была бы такой:

some_string <- "this is a string with some numbers 9639998 21057535 1000 2021 2022"
output <- gsub("\\s*(?:\\d{7,8}|(?!1000\\b)\\d{4})\\s*", " ", some_string, perl=TRUE)
output <- gsub("^\\s+|\\s+$", "", gsub("\\s{2,}", " ", output))
output

[1] "this is a string with some numbers 1000"

Опция stringr для сохранения 1000 и длин, отличных от 4,7 и 8. (В выборку данных включена длина 5.)

library(stringr)

"this is a string with some numbers 9639998 21057535 1000 2021 20022 2022" |> 
  str_remove_all("(?!1000)\\b(\\d{7,8}|\\d{4})\\b") |> 
  str_squish()
#> [1] "this is a string with some numbers 1000 20022"

Created on 2022-05-17 by the reprex package (v2.0.1)

Apols тоже зациклен на результате. Обновлено, чтобы сохранить длину 5.

Carl 17.05.2022 12:11

Другие вопросы по теме