gpt4 book ai didi

r - 如何返回R中的小数位数

转载 作者:行者123 更新时间:2023-12-03 12:02:46 25 4
gpt4 key购买 nike

我在 R 工作。我有一系列十进制度数的坐标,我想按这些数字有多少个小数位对这些坐标进行排序(即我想丢弃小数位太少的坐标)。
R 中是否有一个函数可以返回一个数字的小数位数,我可以将其合并到函数编写中?
输入示例:

AniSom4     -17.23300000        -65.81700

AniSom5 -18.15000000 -63.86700

AniSom6 1.42444444 -75.86972

AniSom7 2.41700000 -76.81700

AniLac9 8.6000000 -71.15000

AniLac5 -0.4000000 -78.00000

理想情况下,我会编写一个脚本来丢弃 AniLac9 和 AniLac 5,因为这些坐标没有以足够的精度记录。我想丢弃经度和纬度都少于 3 个非零十进制值的坐标。

最佳答案

您可以轻松地为该任务编写一个小函数,例如:

decimalplaces <- function(x) {
if ((x %% 1) != 0) {
nchar(strsplit(sub('0+$', '', as.character(x)), ".", fixed=TRUE)[[1]][[2]])
} else {
return(0)
}
}

并运行:
> decimalplaces(23.43234525)
[1] 8
> decimalplaces(334.3410000000000000)
[1] 3
> decimalplaces(2.000)
[1] 0

更新(2018 年 4 月 3 日)以解决 @owen88 关于因舍入 double 浮点数而导致的错误的报告——替换 x %% 1查看:
decimalplaces <- function(x) {
if (abs(x - round(x)) > .Machine$double.eps^0.5) {
nchar(strsplit(sub('0+$', '', as.character(x)), ".", fixed = TRUE)[[1]][[2]])
} else {
return(0)
}
}

关于r - 如何返回R中的小数位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5173692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com