6
我都首先提到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