我想在将字符转换成数字类时保持负号。但是最终收到了像强制措施引入的NA之类的警告。
test <- c("001","00-2","0003")
test <- as.numeric(as.character(test))
我希望实际输出是:
1 -2 3
但是当前输出是:
1 NA 3
有人可以帮我吗?谢谢!
答案 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