R - 如何根据它们的值从字符串中删除字符?

R - how to drop chars from string depending on their values?

我有一个 CSV 文件,其中数值的存储方式如下:

+000000000000000000000001101.7100

上面的数字是1101.71。该字符串的长度始终相同,因此实际数字之前的零数取决于数字的长度。 我怎样才能在实际数字之前去掉 + 和全 0,以便我可以轻松地将它转换为数字?

如果是固定宽度,那么substring会是一个更快的选择

as.numeric(substring(str1, nchar(str1)-8))
#[1] 1101.71

但是如果我们不知道开头会有多少个 0,那么另一种选择是 sub 我们在开头匹配 + (^)字符串的后跟 0 个或多个 0 的元素 (0*) 并替换为空白 ("")

as.numeric(sub("^\+0*", "", str1))
#[1] 1101.71

请注意,我们对 + 进行了转义,因为它是一个暗示一个或多个

的元字符

我可能漏掉了一个重点,但我最好的尝试是这样的:

1) 以字符形式读取值

2) 用substr去掉第一个字符,即加号

3) 使用 as.integer 转换列/这样我们就可以安全地丢失任何前导零