我试图将.000278转换为R中的278但我看到的所有功能只能将其移动到.278。它需要是一个完整的正数。
是否有一个函数可以删除数字前面的.0+
答案 0 :(得分:3)
我假设你想同时将它应用于许多数字(否则我可能不理解这个问题)。
a <- c(0.003, 0.0056, 0.000278)#Example data
a*(10^(nchar(a)-2))
[1] 3 56 278
确保使用scipen
禁用科学记数法,如this帖子中所述(例如,通过执行options(scipen=999)
。这很重要,因为nchar
计算字符数这些数字(&#34; 0。&#34;减去2)。
另一种方法。使用包stringr
。
a <- c(0.003, 0.0056, 0.000278)#Example data
library(stringr)
as.numeric(str_replace(a, "0.", ""))
[1] 3 56 278
请注意,使用此方法,您需要使用str_replace
将as.numeric
的输出转换回数字(不理想)。
答案 1 :(得分:2)
或使用
substr
和regexpr
提供了您想要的内容
x <- 0.000278
as.numeric(substr(x ,regexpr("[^0.]",x),nchar(x)))
[1] 278
这也适用于不同的数字,只需设置:
options("scipen"=100, "digits"=10) # Force R not to use exponential notation (e.g. e-8)
你可以尝试例如:
z <- 0.000000588
as.numeric(substr(z ,regexpr("[^0.]",z),nchar(z)))
[1] 588
答案 2 :(得分:1)
试试这个(len
可调):
a <- 0.000278
a*(10^match(T,round(a, 1:(len=10)) == a)) # counts the number of decimals places
# 278
如果as.numeric(a)
属于字符类型,请使用a
。
答案 3 :(得分:0)
> as.numeric(gsub("^[0.]*", "", paste(0.000278)))
[1] 278