我想找到具有不同尺度的数字向量中有效数字的数量。
例如,数字 1000 有 1 位数字; 数字 100 也有 1。数字 1300 有 2。
不要将其与小数点后的位数混淆,在这两种情况下都等于 0。
最佳答案
此函数会将向量中的每个值转换为字符值,删除所有前导零、尾随零和小数位,并计算剩余的字符数。它的性能似乎与 phiver 的答案相当。
sigfigs <- function(x){
orig_scipen <- getOption("scipen")
options(scipen = 999)
on.exit(options(scipen = orig_scipen))
x <- as.character(x)
x <- sub("\\.", "", x)
x <- gsub("(^0+|0+$)", "", x)
nchar(x)
}
x <- c(1000,100,1300, 1200.1, 12345.67, 12345.670)
sigfigs(x)
注意事项:
此函数返回既不是前导零也不是尾随零的位数。这与有效位数并不完全相同。虽然前导零从来不重要,但尾随零可能重要也可能不重要——决定它们是否重要需要一些有关测量精度的知识。我建议阅读维基百科有关“有效数字”的文章以了解更多详细信息。
关于r - 求r中有效位数与小数点后的位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730224/