Trước tiên tôi đã gọi đến số this question, nhưng câu trả lời không giúp ích gì trong trường hợp của tôi.R: Xóa các số 0 đứng đầu từ đầu chuỗi ký tự
Tôi có một danh sách trong đó mỗi thành phần chứa các phần tử bắt đầu bằng số, theo sau với các từ (ký tự). Một số số ở đầu các phần tử có một hoặc nhiều số 0 đầu. Dưới đây là một phần nhỏ của danh sách:
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"))
Những gì tôi muốn đạt được là để loại bỏ các số không hàng đầu mà họ đang có sẵn và vẫn có đơn zero vào đầu 0 Undefined
cộng với tất cả các yếu tố khác mà không bắt đầu với hàng đầu zeroes. Tức là, để có danh sách như sau:
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"))
Tôi đã đi hàng giờ rồi mà không thành công. Điều tốt nhất tôi có thể làm là thế này:
lapply(x, function(i) {
ifelse(grep(pattern = "^0+[1-9]", x = i),
gsub(pattern = "^0+", replacement = "", x = i), i)
})
Tuy nhiên, nó chỉ trả về những yếu tố trong các thành phần danh sách, nơi có được hàng đầu zero, nhưng không phải là phần còn lại mà không cần và cũng không 0 Undefined
.
Ai đó có thể trợ giúp?
Nó hoạt động một cách hoàn hảo! Cảm ơn nhiều! – panman
Bạn có thể bỏ qua tham số 'perl = TRUE', không thực sự cần thiết. 'lapply (x, hàm (y) sub ('^ 0 + ([1-9])', '\\ 1', y))' – hwnd
@hwnd: Cảm ơn bạn! – panman