憩心阁分享 http://blog.sciencenet.cn/u/zhangdong 知行合一。

博文

R语言中的数字精度问题

已有 9230 次阅读 2014-7-19 00:22 |系统分类:科研笔记|关键词:学者| R语言, 距离, 经纬度, 数字精度, acos

在用GPS坐标计算空间两点的距离时,发现R语言中数字精度有问题。

根据经纬度计算距离的公式在这里:http://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html

简单来说,首先计算C,然后计算Distance

C =sin(LatA)*sin(LatB) + cos(LatA)*cos(LatB)*cos(MLonA-MLonB)

Distance= R*Arccos(C)*Pi/180

同一个点到它自身的距离肯定是0,这时C=1,但是R语言中,这时候的C并不真正等于1(事实上是大于1),这样在求arccos(C)的时候就会产生na

我采用的解决的方法是

ifelse(dist_c>= 1, dist_c  <-  1, dist_c <- dist_c)

即对于大于等于1c,直接设为1,否则保持不变。

参考:http://stackoverflow.com/questions/14026297/acos1-returns-nan-for-some-values-not-others

这里提到用pmin(),似乎没有解决我的问题




https://m.sciencenet.cn/blog-247792-812866.html

上一篇:R语言中同时删除多行,或者多列
下一篇:ggplot2中坐标网格和坐标文字字体和字号的调整

1 Vetaren11

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-1 23:44

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部