Ho fatto riferimento per la prima volta a this question, ma le risposte non sono state d'aiuto nel mio caso.R: Rimuovere gli zeri iniziali dall'inizio di una stringa di caratteri
Ho una lista in cui ogni componente contiene elementi che iniziano con numeri, seguiti da parole (caratteri). Alcuni numeri all'inizio degli elementi hanno uno o più zeri iniziali. Ecco piccola parte della lista:
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"))
Quello che voglio raggiungere è quello di rimuovere gli zeri iniziali dove sono disponibili e hanno ancora il singolo zero all'inizio di 0 Undefined
più di tutti gli altri elementi che non iniziano con zeri principali. Cioè, per avere la lista come segue:
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"))
mi sono state andando per ore ora senza successo. Il meglio che ho potuto fare è questo:
lapply(x, function(i) {
ifelse(grep(pattern = "^0+[1-9]", x = i),
gsub(pattern = "^0+", replacement = "", x = i), i)
})
Tuttavia, restituisce solo quegli elementi nei componenti della lista in cui c'erano zeri iniziali, ma non il resto, senza e anche senza 0 Undefined
.
Qualcuno può aiutare?
funziona perfettamente! Grazie mille! – panman
È possibile omettere il parametro 'perl = TRUE', non realmente necessario. 'lapply (x, function (y) sub ('^ 0 + ([1-9])', '\\ 1', y))' – hwnd
@hwnd: Grazie! – panman