R包判断昼与夜

我遇到了一个难题,要给我去年为期半年、每半小时一条的观测数据每条都加上一个标识,来反映当时属于白天还是黑夜。这个标识是根据当地经纬度和日期用天文学一系列公式计算出来的,比较复杂。我们组有现成的matlab代码,但是跟我的需求有差距,需要改,无奈我matlab我不熟,只能看懂,改起来在很多细节上有困难。我就想把matlab代码改写成R代码,然后就可以随心所欲地进行后续工作了。

  这个事情花了我整整一个下午,最后成型的是几十行代码。结果跟NOAA在线计算相比,我的R代码算出来的日出总是晚几分钟,日落总是早几分钟。到最后也没有搞定。这其实不是什么大不了的,够用了,可是我觉得不爽。

  快下班的时候,我灵机一动搜了一下,果然搜到了一个现成的R包,叫做maptools。用这个包的一个函数,两行代码就算出来了。跟NOAA的完全一致。仔细一看,作者说用的就是NOAA的算法。NOAA怎么算的,我懒得找了。

  这可是太开心了。

  这件事刺激了我的惰性。我想起一直想写一段代码来计算 index of agreement 和coefficient of efficiency,用来比较模拟值和观测值的吻合程度。其实很容易写,可我懒得写了,不如搜一搜吧。果然,又找到了一个R包,叫做hydroGOF,模型和观测进行比较时常用的统计量都可以算。

  以前光顾闷头自己从零写代码,其实很多东西都有人写好了。

  R真是个好东西。

原文链接

comments powered by Disqus