附录B R中其他可做的事情
还有很多R可以做的事情本书没有加以介绍,有的是因为它们的需求比较小众,有的是因为过于高级,还有的是因为有关那些主题已有了非常好的介绍书籍。本附录旨在告诉你如何找到这些资源。有好几个这里涉及的主题都能在CRAN Task View(http://cran.r-project.org/web/views/)里找到,非常值得你仔细浏览。
你可以在R代码中使用GUI来帮助那些不太懂技术的用户。例如,gWidgets
框架允许从高层访问几个图形工具包,其中包括tcl/tk
、qt
、GTK
和HTML
(tcltk/tcltk2
、qtbase
、RGtk2
和几个HTML生成器的包也可以进行底层访问)。参阅 Michael Lawrence和John Verzani的Programming Graphical User Interface in R来获取更多的信息吧。基于Java的deducer
包提供了一个替代,而RStudio的shiny
包则使用R来编写网络应用程序变得非常简单。
你可以通过.Call
函数调用编译语言的代码(如C、C++和FORTRAN)。到目前为止,使用这些语言的最简单的方法是编写C++的代码并且与Rcpp
包一起使用。关于此主题的更多信息,请参阅Dirk Eddelbuetted的Seamless R and C++ Integration with Rcpp。
R是单线程的,不过也有好几种方法能够让它利用多核或多台机器来并行运行你的代码。通过使用R中附带的parallel
包 ,在符合POSIX协议的操作系统(这些操作系统都不属于Windows)下,你可以直接用mclapply
取代lapply
,使之在你机器上的所有内核上执行循环。通过使用snow
和parallel
包还可得到基于套接字的多核集群功能(例如 MPI、SOCK或其他)。你也可以使用RHIPE(http://www.datadr.org/)和rmr
包连接到一个Hadoop集群,或使用segue
连接到Amazon Web Services下的hadoop,但注意这并不适用于Windows平台。更多细节请阅读Q.Ethan McCallum和Stephen Weston著写的Parallel R。Revolution R的企业版具有内置的一些并行化功能。
ff
和bigmemory
包允许你把R的变量存储到文件中(如SAS一样),这就避免了内存的限制。与此相关的data.table
包提供了增强的数据框变量类型,它具有更快的索引、分配和合并功能。
R还有几十个软件包可用于空间统计:sp
提供了存储空间数据对象的标准方式,maps
、maptools
和mapproj
提供用于读写地图的辅助函数,spatstat
提供了空间统计的函数(你猜对了),还有OpenStreetMap
能从http://openstreetmap.com 检索光栅图像,等等。
最后,R有用于组合代码以及使用常规文本输出到报告中(有时也被称为文学编程或重复性的研究)的工具,即Sweave
。它已经由knitr
包改善和扩展,它将允许你使用各种标记语言来创建报告。事实上,本书就是用knitr
创建AsciiDoc
标记,从而用于创建PDF、HTML和ebook的文档。Yihui Xie的Dynamic Documents with R and knitr解释了如何使用它。
R的生态系统很大,并随着时间的推移变得越来越大。这些可能只是你想探索的一小部分东西而已;请阅读一下参考书目,看是否有令你感兴趣内容。愉悦地享受探索之旅吧!