最近在学习写一个R包,本文对学习过程做一个简单整理。
因为课题需要,最近需要实现一个数据可视化的功能。因为ggplot2提供了扩展接口,所以就想着基于ggplot2实现这个功能。看了一些文档之后(见文末),就开始动手实现了。
开始还比较顺利,通过ggproto创建了一些新的Geom类。在拓展一些新功能的时候发现调用另一个包的函数总是失败,我猜想可能是和environment有关。用了这么久的R却对environment一知半解,只得上网去找详细资料。一番搜索后找到一本"Advanced R",参照修改。最后尝试打包成package,有很不错的文档可以参照学习(见文末)。
一般来说,当你需要通过R实现一个功能并想要分享给别人时,R包是一个不错的选择。对于像我一样的新手来说,从简单功能(比如R包只包含几个简单的函数)开始应该是比较合适的。
我的这次学习参照了一些在线文档,回过头来才发现这些文档都是出自Hadley Wickham(以及他的合作者)之手。在此列出这些文档,以供参考。
(尤其推荐"Advanced R"这本书,里面介绍了R的设计哲学。从这本书第一节开始就让我耳目一新。比如第一节讲变量,提到R里面变量的引用采用了copy-on-modify的策略,也就是说只有当引用变量对值修改时才会进行一份拷贝。我以前一直以为是引用时就会进行拷贝)
文档列表:
与R语言(设计理念)有关的
与R包开发有关的
与ggplot2扩展开发有关的
-- “生信了”公众号 2022年6月