Используйте gsub удалить всю строку перед первым числовым символом в R - PullRequest
0 голосов
/ 22 января 2019

Использование gsub удалить всю строку перед первым пробелом в R

В этом примере мы пытаемся удалить все перед пробелом с sub(".*? (.+)", "\\1", D$name).Я ищу что-то действительно похожее, но я не очень знаком с регулярными выражениями.

Я хочу удалить все до первого числового символа, но без удаления

Например, с помощью:

x <- c("lala65lolo","papa3hihi","george365meumeu")

я хочу:

> "65lolo","3hihi", "365memeu"

спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 22 января 2019

В R 3.6 (в настоящее время версия R devel) и далее trimws имеет новый аргумент whitespace, который можно использовать для указания того, что считается пробелом - в данном случае любой нецифровый символ:

trimws(x, "left", "\\D")
## [1] "65lolo"    "3hihi"     "365meumeu"
0 голосов
/ 22 января 2019

Вы можете использовать

> x <- c("lala65lolo","papa3hihi","george365meumeu")
> sub("^\\D+", "", x)
[1] "65lolo"    "3hihi"     "365meumeu"

Или, чтобы убедиться, что есть цифра:

sub("^\\D+(\\d)", "\\1", x)

Шаблон соответствует

  • ^ -начало строки
  • \\D+ - один или несколько символов, отличных от цифры
  • (\\d) - Группа захвата 1: цифра (\1 в шаблоне замены восстанавливает захваченную цифру вэта группа).

Аналогичным образом вы можете добиться следующего:

  • sub("^\\s+", "", x) - удалить весь текст до первого непробельного символа
  • sub("^\\W+", "", x) - удалить весь текст до первого слова char
  • sub("^[^-]+", "", x) - удалить весь текст до первого дефиса (если есть) и т. Д.
...