Mapping CRAN Mirrors using R

CRAN_mirrors_map
昨天突然想看一下怎么用maps包画地图, 就做了一个CRAN镜像的地理位置数据试了一下. 城市地理位置数据主要来自maps包中的数据集world.cities. 画图时用到了maps和tripack这两个包, maps用于呈现地图, 而tripack可以根据给定点坐标计算并绘制Voronoi图/Delaunay三角剖分. 相比主流的C或C++甚至Python下的实现, 在R中做这种事情可以说是简单无比了. 同时也要慨叹R的扩展性是如此之好. 不过目前R中和计算几何相关的包似乎不多, 据我所知还有rcdd(cddlib在R中的接口)和geometry. 比如geometry包, 可以计算n-维上的Delaunay三角形, 等等. 如果某天哪位大牛可以替最强的计算几何算法库CGAL在R中做一个接口就好了.

CRAN_Mirrors_Voronoi

Voronoi Diagram of CRAN Mirrors on World Map [PDF(Vector), 120KB]

CRAN_Mirrors_Delaunay

Delaunay Triangulation of CRAN Mirrors on World Map [PDF(Vector), 120KB]

从图中看, 多数CRAN镜像分布在沿海地区, 内陆较少, 也极不均匀. 西欧密集分布了约30个镜像, 面积是其几倍大小的东侧大片内陆只有寥寥3、4个镜像. 非洲、南美洲的情况大致相同. 北美的镜像分布呈现比较均匀的态势, 至少看上去比较稳定, 不多也不少.

Dataset & R Code [Gzip, 1,932 bytes]

有两个问题是不得不考虑的:

  1. 地球是椭球体, 在球面上绘制Delaunay三角和Voronoi图, 需要通过计算三维空间中的凸包来实现 .. 但考虑到事实上太平洋中间没有CRAN的镜像, 正好十分自然地将现有镜像隔得很远, 就无视这个了 ..
  2. CRAN镜像发挥的影响力与各地光缆铺设情况的关系更紧密, 这时用地理意义上的世界地图就显得略不给力了 .. 使用能够体现网络分布情况的"地图"才是正解.

Rapache项目中文镜像

话说这学期开学以后沉寂许久, 博客都落灰了 .. 这些天闲暇时翻译了一下rapache项目的站点, 主体是Manual部分.

rapache

简要介绍

Rapache提供了一个名为mod_R的Apache模块, 相当于在Web服务器中嵌入了R语言解释器的支持. 同时, rapache捆绑了libapreq这个可使Apache处理客户端请求数据的Apache模块. 这样, 二者将R转换为了一种可接受和处理客户端请求的服务器端脚本语言.

作者官网: http://rapache.net/
中文镜像: http://www.road2stat.com/rapache/index.html

译后小结

印象最深的是Manual中4.6小节介绍 sendBin() 函数中的字节序 (endian-ness) 这个参数和后面的大字节序和小字节序的概念, 由于没有相关的专业功底以及原文在写法上的简约, 前后Google几次又斟酌许久才找到比较合适的译法. 另外, 丁国徽老大在《R导论》中似乎将"raw vectors"译为"原味型"向量, 生动体现了原义, 我在这里使用了较为普遍的"原生型"译法, 这是一点不同之处.

继续阅读