R中是否有一个函数,returns个有效数字?
Is there a function in R, which returns number of significant digits?
我在某处找到了这段代码
signdig = function(x)
{
length(gregexpr("[[:digit:]]", as.character(x))[[1]])
}
但是这个returns奇怪的数字,比如
> L=matrix(c(15,5,9,3.111),nrow=2)
> kappa(L)
[1] 239.5819
> signdig(kappa(L))
[1] 15
有人可以提出解决该问题的算法或代码吗?
为简单起见,我们假设 L
中的所有值都精确到小数点后第三位,并且 kappa(L)
中的所有值也精确到小数点后第三位。我们还假设一个约定,使得值具有等于其数量级的 precision 属性 (表示为 pa
)。因此,L
中的所有值都具有 -3
的精度属性。
那么kappa(L)
中有效数字的个数是
sigfig = ceiling(log10(abs(x))) - precision + (log10(abs(x)) %% 1 == 0)
作为一般函数
count_sigfig <- function(x, precision){
ceiling(log10(abs(x))) - precision + log10(abs(x)) %% 1 == 0)
}
我在某处找到了这段代码
signdig = function(x)
{
length(gregexpr("[[:digit:]]", as.character(x))[[1]])
}
但是这个returns奇怪的数字,比如
> L=matrix(c(15,5,9,3.111),nrow=2)
> kappa(L)
[1] 239.5819
> signdig(kappa(L))
[1] 15
有人可以提出解决该问题的算法或代码吗?
为简单起见,我们假设 L
中的所有值都精确到小数点后第三位,并且 kappa(L)
中的所有值也精确到小数点后第三位。我们还假设一个约定,使得值具有等于其数量级的 precision 属性 (表示为 pa
)。因此,L
中的所有值都具有 -3
的精度属性。
那么kappa(L)
中有效数字的个数是
sigfig = ceiling(log10(abs(x))) - precision + (log10(abs(x)) %% 1 == 0)
作为一般函数
count_sigfig <- function(x, precision){
ceiling(log10(abs(x))) - precision + log10(abs(x)) %% 1 == 0)
}