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