添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

第2章 安装与配置

你有志于成长为一名忍者,很好,那么首先去把火影看完了再来看这本秘笈吧。

当然,不看火影也没关系。咦,怎么有些观众朋友真的离场了?剩下的朋友就别去叫他们了。R这货,是统计学家为统计学开发的一套数据杀器,但那只是对下忍的介绍,对一名上忍来说,必须对它有更全面的认识,否则你查克拉再强、分身再多,在执行任务时也可能会被各种与统计无关的细节给缠死。R的安装有专门的手册,名曰 R Installation and Administration ,我就不说它在哪儿了,你也别问我要,如果你真的那么感兴趣,请自己去找。

哎哎,怎么又有几位客官走了?其实不用这么听话的,忍者得有自己的判断。我不说的原因是R官方的所有手册基本上都很坑爹,R核心团队都是写代码的高手,可是手册写出来都让人昏昏欲睡,一点读的欲望都没有,这样也好,让他们专注于代码开发吧。迄今为止,我唯一看的手册是 Writing R Extensions ,因为我需要写R包,不按它来就没法整;官方手册技术性太强,这也给无数作者创造了写作机会,不然你也不会看到这里来。

2.1 安装R

R的首页在 http://www.r-project.org ,你打开之后一定很失望,苍天呐,世上怎么还有这么古董的网站!几乎是纯文本网站(高级码农都这德行),首页上的那幅图已经七八年没换过了,还用着古老的框架技术。算了,不吐槽了,下载链接在左侧,写着CRAN的那地方。你是忍者,所以你当然不能直接去下载就完事,你得了解CRAN(Comprehensive R Archive Network)这一套东西。所谓的C什么AN是自由软件世界常见的软件分发方式,类似的还有为TeX准备的CTAN,为Perl弄的CPAN等。Linux打一出生就是通过网络发布的,直到今天这个特性还是没有变,后面再详谈Linux的问题。Archive Network的大意是这软件有个主服务器,然后在世界各地有一些镜像服务器,上面的文件和主服务器保持同步,这样减轻主服务器的下载压力,并让其它地区的用户能有更快的下载速度(从离自己近的本地服务器下载)。R除了自己的主程序,还有数万个用户贡献的附加包,以及各种文档,这一大箩筐东西被复制到世界各地几十台服务器上供用户下载。

如果你是中国用户,可以选一个国内的镜像。这里我们要特别感谢那些志愿提供服务器的单位对自由软件的支持,如厦门大学、中科院、中科大和北京交通大学等。咱们魏太云大版主对这些事情比较关心,国内要是出了新的镜像通常都是他率先报道(例 http://cos.name/cn/topic/106549 )。

2.1.1 R主程序

先说Windows。要是能找到下载地址就去下,找不到的话,可爱的R core给做了一个自动重定向的网页: http://cran.r-project.org/bin/windows/base/release.htm ,只要点这个链接,你就会下载最新版本的R,地址可以改为相应的本地镜像,如 http://ftp.ctex.org/mirrors/CRAN/bin/windows/base/release.htm 。各位忍者请务必研究这个页面的源代码,搞清楚为什么这个页面会让浏览器自动下载Windows版本的R安装程序。

Windows中安装R注意几点:

  • 把默认安装目录中的R版本号去掉,比如要是R告诉你装在 C:/Program Files/R/R-2.15.0/ ,不要接受这个结果,把它改成 C:/Program Files/R/ ,原因后面解释;
  • 避免安装在中文目录下,因为Windows世界的各种鸟语方言编码问题,跟中文有关的东西往往会扯上麻烦;
  • 用自定义方式安装(装任何软件都用这种方式,你得了解你的软件里有什么组件、装哪儿去了以及有什么选项配置),默认情况下会装上翻译文件,但R的中文翻译实在不咋地,几年前我实在忍不下去了(那View菜单竟然翻译为单字“看”,这上哪儿说理去啊),动手把界面上的词句重新翻译了一下,好歹像人话了,不过R内部还有大量的条目没有翻译或翻译得很差,要是报个错你都不知道它到底在说什么;所以,还不如直接用原生的英文,不要安装翻译文件,不过这一点在R 2.15.0之后已经不可能了,R 2.14.2以及更早的版本我们可以在安装的时候就选择不要翻译文件,而2.15.0以后的语言配置参见本章最后关于 Rconsole 文件的说明;
  • 去掉安装目录中的版本号目录

    R 2.15.0的安装界面(可选32位或64位的R)

    R 2.15.0以前可以选择不安装消息翻译文件

    关于第1点,2011年4月我跟R core结结实实打了一仗,最终没有人同意我(战场: http://bit.ly/GFluEX )。为什么我认为默认带上版本号是个很糟糕的选择呢?主要是R一直在不断升级中,而在可怜的Windows底下没有直接升级的方式(快投奔Linux吧),必须先卸载老版本,下载新版本再重新安装。默认情况下,新版本装在新目录下,这样就导致你过去的设置或改动可能会出问题,在我的经历中,至少有两点麻烦:

  • PATH环境变量需要手动更新(下一节再说忍者必读的PATH);
  • 过去安装的附加包要么全部重新安装,要么手工挪动到新目录下;
  • 总之问题就是两个不同版本的R安装在不同目录下,你得废半天劲去更新各种配置。除非你真的需要多个版本,否则建议永远安装在同一个固定目录下。Windows Vista之后的用户还得关心权限问题,这又是Windows坑爹的发明,过去系统目录下(一般是C盘下)可以随便读写,现在要读写必须要弹个对话框让你确认或输密码。R等不了这事儿,所以要是没有写文件的权限,有些事情就得歇菜,例如安装附加包。这种情况下,建议干脆不要装在那个什么 C:/Program Files/ 下,而是自己新建一个目录,比如 C:/Software/ ,把你自己的软件装在这个目录下,Windows管不着。

    再说Linux。前面说了,Linux是嘴里含着互联网出生的,尽管它后面衍生了很多个发行版,多数情况下,软件都可以从发行版的软件仓库中直接安装,不必自行下载,R也不例外,它提供了四种发行版的仓库:Debian、RedHat、OpenSUSE和Ubuntu。我用的Linux发行版是Ubuntu(普通青年的选择),下面简单说说Ubuntu下的安装,这些步骤都在CRAN页面里,看得懂英文就能按照指示做( http://cran.r-project.org/bin/linux/ubuntu/ )。

    首先添加R的软件库,可以从Synaptic软件包管理器中 Settings --> Repositories --> Other Software 然后添加(Add),把那一行 deb 命令贴在文本框中即可,但注意把镜像地址更改为合适的网址。

    在Synaptic中添加R的软件库

    添加R软件库的命令行

    由于Linux下的软件库通常需要负责人签名验证安全性,在添加完R的仓库地址之后,还需要把仓库负责人的钥匙信息导入你的系统,这样你的Ubuntu才能放心从那里安装R,导入只是两行命令的事儿(打开终端Terminal敲命令):

    http://cran.r-project.org/bin/macosx/ 提供的PKG包,32/64/Intel/PPC版本都包含了GUI。唯一需要注意的是系统的版本,10.4以下的会有各种问题。

    最新的Sierra 10.12已经改名叫macOS啦,一般来说Mavericks(10.9)以上都可以使用 Homebrew 安装R,省力又方便,顺便RStudio也一起装上吧:

    http://www.r-project.org 看不到导航,必须去 http://cran.r-project.org 或其它CRAN镜像才能看到。我当时看到这个解释有点石化的感觉。谁有钱了给R core们捐几台服务器吧!免得以后再看见这么寒碜的回答。

    开源软件通常都一定提供源代码包给你,但不一定提供编译好的二进制包,我们知道对计算机来说,它不认识源代码,只能运行编译过的代码。用过C语言的对此应该会有深刻印象,你先写一个 .c 文件,再用编译器把它编译为 .exe (Windows)或 .so (Linux)等二进制文件才能运行。R也一样,不仅它自己的主程序有源代码可以下载,附加包也一样有源代码。源代码包的形式通常是一个 *.tar.gz 压缩包,到CRAN主页一看就能找到R自己的源代码,形如 R-x.y.z.tar.gz ,其中 x.y.z 是R的版本号,如 2.14.2 ;而关于附加包,可以从CRAN左侧的 Packages 链接进去找到所有附加包的列表页面,然后进入具体的包的页面,如果你已经知道包的名字,则可以用

    http://cran.r-project.org/package=foobar

    直接访问 foobar 包的页面。其实忍者根本不来这一套,记那么多没用的步骤干嘛,直接打开Google搜CRAN加包名肯定就找到了。每个包的页面里有包的描述和卸载链接,通常有三个链接,分别对应着源代码( foobar_x.y.tar.gz )、Mac二进制包( foobar_x.y.tgz )和Windows二进制包( foobar_x.y.zip ),视你的操作系统你可以选择一个下载。注意二进制包都是编译过的,所以那里面是看不到源代码的;要看源代码,必须下载源代码包解压缩之后才能看到,具体的某个函数定义在哪儿,就靠你的文本编辑器的搜索功能了,或者你的直觉。这一大套什么源代码什么二进制文件对普通青年都没用,只是对想深挖包里函数源代码的忍者提供一个下手的方向。

    普通青年在R里面安装附加包只需要用 install.packages() 函数,比如:

    http://cran.r-project.org/package=animation 可以看到有一栏 SystemRequirements ,它说明了这个包的部分函数依赖于外部程序,如GraphicsMagick。

    对Linux用户来说,R默认安装方式就是从源代码包直接编译,此时要是有外部依赖软件,可能就会稍微麻烦一点,比如 XML 包依赖于 libxml2 ,装R包 XML 之前,为了这个包能成功编译,必须先装系统软件 libxml2-dev ,注意是dev版本,因为通常这种版本里才含有头文件( *.h ),Linux下的软件编译通常需要完整源文件。在你头疼之前,应该想到这种问题别人也一定觉得烦,所以必然有另外的办法。CRAN的Debian维护者把一些常用的依赖外部软件的R包集合起来直接放到了Debian的软件仓库中,在服务器端就直接解决依赖并编译好,这样我们就不需要额外安装那些源程序包了。这些特殊的包在Debian/Ubuntu中名为 r-cran-foobar (全小写),比如我们可以直接安装 XML 包:

    1

    https://github.com/r-cn/r-cntrans。不过忍者必须熟悉英文,仅仅靠翻译的文字很难走远。