Я сначала упомянул this question, но ответы не помогли в моем случае.R: удалить ведущие нули с начала строки символов
У меня есть список, где каждый компонент содержит элементы, начинающиеся с цифр, сопровождаемые словами (символами). Некоторые из чисел в начале элементов имеют один или несколько ведущих нулей. Вот небольшая часть списка:
x <- list(el1 = c("0010 First",
"0200 Second",
"0300 Third",
"4000 Fourth",
"0 Undefined",
"60838 Random",
"903200 Haphazard"),
el2 = c("0100 Hundredth",
"0200 Two hundredth",
"0300 Three hundredth",
"0040 Fortieth",
"0 Undefined",
"949848 Random",
"202626 Haphazard"),
el3 = c("0010 First",
"0200 Second",
"0300 Third",
"0100 Hundredth",
"0200 Two hundredth",
"0300 Three hundredth",
"0 Undefined",
"60838 Random",
"20200 Haphazard"))
То, что я хочу добиться того, чтобы удалить начальные нули, где они доступны и по-прежнему имеют единственный нуль в начале 0 Undefined
плюс все другие элементы, которые не начинаются с ведущие нули. То есть, для того, чтобы список был следующим:
x <- list(el1 = c("10 First",
"200 Second",
"300 Third",
"4000 Fourth",
"0 Undefined",
"60838 Random",
"903200 Haphazard"),
el2 = c("100 Hundredth",
"200 Two hundredth",
"300 Three hundredth",
"40 Fortieth",
"0 Undefined",
"949848 Random",
"202626 Haphazard"),
el3 = c("10 First",
"200 Second",
"300 Third",
"100 Hundredth",
"200 Two hundredth",
"300 Three hundredth",
"0 Undefined",
"60838 Random",
"20200 Haphazard"))
Я собираюсь часами работать без успеха. Лучшее, что я мог бы сделать это:
lapply(x, function(i) {
ifelse(grep(pattern = "^0+[1-9]", x = i),
gsub(pattern = "^0+", replacement = "", x = i), i)
})
Однако, он просто возвращает эти элементы в компонентах список, где были ведущие нули, но не без отдыха, а также без 0 Undefined
.
Может кто-нибудь помочь?
Он отлично работает! Большое спасибо! – panman
Вы можете опустить параметр 'perl = TRUE', который не нужен. 'lapply (x, function (y) sub ('^ 0 + ([1-9])', '\\ 1', y))' – hwnd
@hwnd: Спасибо! – panman