如何将负号从字符变为数字

时间:2019-09-14 12:50:38

标签: r

我想在将字符转换成数字类时保持负号。但是最终收到了像强制措施引入的NA之类的警告。

test <- c("001","00-2","0003")
test <- as.numeric(as.character(test))

我希望实际输出是:

1 -2 3

但是当前输出是:

1 NA 3

有人可以帮我吗?谢谢!

1 个答案:

答案 0 :(得分:5)

1)sub 删除前导0,然后进行转换:

as.numeric(sub("^0+", "", test))
## [1]  1 -2  3

2)修剪在R 3.6或更高版本中,这也将起作用:

as.numeric(trimws(test, "left", 0))
## [1]  1 -2  3

边缘包

3)paste0 如果可能全为零,则sub会将字符串缩减为空字符串,因此假设我们没有小数,我们可以这样做:

test2 <- c(test, "00")
as.numeric(sub("^0+", "", paste0(test2, ".0")))
## [1]  1 -2  3  0

3a)

as.numeric(sub("^0*(.)", "\\1", test2))
## [1]  1 -2  3  0