资源描述
R入门25招
关于作者
陈钢, 华大基因, 研究员
长沙土鳖,Linux系统初级管理员,Perl入门级程序员,R菜鸟,LaTeX爱好者,Python学习者,业余Web开发人员,生物信息学和系统生物学门外汉~
Blog 豆瓣 新浪微博
向文章付费 请作者吃饭
第1招:下载和安装
下载和安装R
问题:
要把R安装到自己的电脑上。
解决方案:
Windows和OS X用户可以从CRAN(Comprehensive R Archive Network)上下载R。Linux和Unix用户则可以用各自的包管理工具安装R软件包。
Windows
1 在浏览器中打开http://www.r-project.org/。
2 点击“CRAN”。然后会看到按国家排序的镜像站点列表。
3 就近选择一个镜像站点。
4 点击“Download and Install R”下的“Windows”。
5 点击“base”。
6 点击下载最新版R(一个.exe文件)的链接。
7 下载完成后,双击.exe文件,按照提示安装。
OS X
8 在浏览器中打开http://www.r-project.org/。
9 点击“CRAN”。然后会看到按国家排序的镜像站点列表。
10 就近选择一个镜像站点。
11 点击“MacOS X”。
12 在“Files”中点击最新版R的.pkg文件,下载。
13 下载完成后,双击.okg文件,按照提示安装。
Linux或Unix
主要的Linux发行版都有安装R的包。下表中是是一些例子:
发行版
包名称
Ubuntu或Debian
r-base
Red Hat或Fedora
R.i386
Suse
R-base
用系统的包管理器下载并安装R的软件包。这通常都需要root密码或者是sudo权限,或者也可以要系统管理员来安装。
讨论
在Windows和OS X上安装R都是很简单的,因为相应的安装包都是预编译好的。只需要根据安装程序的提示一步步地安装即可。CRAN的网页上也提供了跟安装有关的资源,例如常见问题(FAQ)和针对某些特殊情况的提示(“如何在Windows Vista上安装R?”(“How to install R when using Windows Vista?”)),这些都挺有用的。
理论上来说,在Linux或Unix上有两种安装R的方法:安装某个发行版的软件包,或是自己编译源代码。在实际使用中,安装软件包是更好的选择。各个发行版所提供的软件包在安装和随后的升级等方面都更加方便。
在Ubuntu和Debian中,是用apt-get下载和安装R。需要用sudo命令获得必要的权限:
代码
1
<span class="pln">$sudoapt</span><span class="pun">-</span><span class="kwd">get</span><span class="pln">installr</span><span class="pun">-</span><span class="kwd">base</span>
在Red Hat和Fedora则是用yum:
代码
1
<span class="pln">$sudoyuminstallR</span><span class="pun">.</span><span class="pln">i386</span>
大部分的系统还提供了更加方便的图形化包管理器。
除了基础包,笔者还建议读者把文档包也装上。例如,在我的Ubuntu机器上,我安装了r-base-html(因为我喜欢阅读带超链接的文档)和r-doc-html两个包,这样就将R的用户手册安装到了本地:
代码
1
<span class="pln">$sudoapt</span><span class="pun">-</span><span class="kwd">get</span><span class="pln">installr</span><span class="pun">-</span><span class="kwd">base</span><span class="pun">-</span><span class="pln">html r</span><span class="pun">-</span><span class="pln">doc</span><span class="pun">-</span><span class="pln">html</span>
有些Linux的软件库中还有一些CRAN上的R软件包。我没用这些软件包,因为我更喜欢直接从CRAN上下载这些软件包的最新版。
在个别情况下,读者有可能需要自己从源代码编译R:有可能是在使用不被支持的Unix版本,或是在性能和配置方面有特殊的考量。Linux和Unix上的编译过程是非常标准化的。从CRAN镜像站点的首页上下载压缩包,压缩包的名字一般是R-2.12.1.tar.gz,只是其中的2.12.1会被最新的版本号代替。解压这个压缩包,然后根据其中的INSTALL文件的提示进行编译。
扩展阅读
R in a Nutshell一书中对R的下载和安装有更加详细的介绍,包括如何在Windows和OS X上编译R。但有关R的安装的最强秘笈还是CRAN上的R Installation and Administration,其中介绍了如何在各种各样的操作系统上编译和安装R。
这一招是关于如何安装基础包的。安装CRAN上的其他包则是用install.packages函数。
关于作者
陈钢, 华大基因, 研究员
长沙土鳖,Linux系统初级管理员,Perl入门级程序员,R菜鸟,LaTeX爱好者,Python学习者,业余Web开发人员,生物信息学和系统生物学门外汉~
Blog 豆瓣 新浪微博
向文章付费 请作者吃饭
相关文章
14 RSPerl:在Perl里面调用R
15 一份R培训的提纲
16 从R中调用Cytoscape绘制复杂网络
17 R中的公式:使用
18 [翻译]R入门25招 第9招:用列数据初始化数据框
第2招:获取函数的帮助
问题
要获得安装在自己电脑上的某个函数的帮助信息。
解决方案
用help显示函数的文档:
代码
1
<span class="pun">></span><span class="pln"> help</span><span class="pun">(</span><span class="pln">functionname</span><span class="pun">)</span>
用args了解该函数的参数:
代码
1
<span class="pun">></span><span class="pln"> args</span><span class="pun">(</span><span class="pln">functionname</span><span class="pun">)</span>
用example察看函数的使用例子:
代码
1
<span class="pun">></span><span class="pln"> example</span><span class="pun">(</span><span class="pln">functionname</span><span class="pun">)</span>
讨论
本书中出现了各种各样的函数。在有限的篇幅里不可能面面俱到地介绍各个R函数。笔者强烈建议读者自己阅读感兴趣的函数的帮助文件。帮助文件中所提供的信息是非常有用的。
如果想要了解mean函数,可以这样使用help函数:
代码
1
<span class="pun">></span><span class="pln"> help</span><span class="pun">(</span><span class="pln">mean</span><span class="pun">)</span>
R会新开一个窗口显示帮助文档,或者是在控制台中显示帮助文档,具体的显示方式取决于读者所使用的操作系统。help命令的一个快捷方式是?号(问号),然后在后面加上函数的名称:
代码
1
<span class="pun">></span><span class="pln"> </span><span class="pun">?</span><span class="pln">mean</span>
如果只是想知道函数有哪些参数,顺序是怎样安排的,就可以用args函数:
代码
1
2
3
4
5
6
<span class="pun">></span><span class="pln"> args</span><span class="pun">(</span><span class="pln">mean</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">x</span><span class="pun">,</span><span class="pln"> </span><span class="pun">...)</span><span class="pln">
NULL
</span><span class="pun">></span><span class="pln"> args</span><span class="pun">(</span><span class="pln">sd</span><span class="pun">)</span><span class="pln">
</span><span class="kwd">function</span><span class="pln"> </span><span class="pun">(</span><span class="pln">x</span><span class="pun">,</span><span class="pln"> na</span><span class="pun">.</span><span class="pln">rm </span><span class="pun">=</span><span class="pln">FALSE</span><span class="pun">)</span><span class="pln">
NULL</span>
args函数的第一行输出是函数调用的概要。对于mean函数,概要中显示的是其唯一的参数,x,这是一个数值向量。对于sd函数,概要中首先也是一个同样的向量,x,还有另一个名为na.rm的可选参数。(读者可以忽略第二行输出,通常都是NULL。)
大部分函数的文档的末尾都会有例子。在R里面可以直接运行这个例子,演示函数的功能。例如,mean函数的文档中就有几个例子。读者不必自己输入这些例子。用example函数就能看到这些例子的运行结果:
代码
1
2
3
4
5
6
7
8
9
<span class="pun">></span><span class="pln"> example</span><span class="pun">(</span><span class="pln">mean</span><span class="pun">)</span><span class="pln">
mean</span><span class="pun">></span><span class="pln"> x </span><span class="pun"><-</span><span class="pln"> c</span><span class="pun">(</span><span class="lit">0</span><span class="pun">:</span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">50</span><span class="pun">)</span><span class="pln">
mean</span><span class="pun">></span><span class="pln"> xm </span><span class="pun"><-</span><span class="pln"> mean</span><span class="pun">(</span><span class="pln">x</span><span class="pun">)</span><span class="pln">
mean</span><span class="pun">></span><span class="pln"> c</span><span class="pun">(</span><span class="pln">xm</span><span class="pun">,</span><span class="pln"> mean</span><span class="pun">(</span><span class="pln">x</span><span class="pun">,</span><span class="pln"> trim </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0.1</span><span class="pun">))</span><span class="pln">
</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="lit">8.75</span><span class="pln"> </span><span class="lit">5.50</span><span class="pln">
mean </span><span class="pun">></span><span class="pln"> mean</span><span class="pun">(</span><span class="typ">USArrests</span><span class="pun">,</span><span class="pln"> trim</span><span class="pun">=</span><span class="lit">0.2</span><span class="pun">)</span><span class="pln">
</span><span class="typ">Murder</span><span class="pln"> </span><span class="typ">Assault</span><span class="pln"> </span><span class="typ">UrbanPop</span><span class="pln"> </span><span class="typ">Rape</span><span class="pln">
</span><span class="lit">7.42</span><span class="pln"> </span><span class="lit">167.60</span><span class="pln"> </span><span class="lit">66.20</span><span class="pln"> </span><span class="lit">20.16</span>
用户只需要输入example(mean),R会负责运行文档中的例子,并显示结果。
关于作者
陈钢, 华大基因, 研究员
长沙土鳖,Linux系统初级管理员,Perl入门级程序员,R菜鸟,LaTeX爱好者,Python学习者,业余Web开发人员,生物信息学和系统生物学门外汉~
Blog 豆瓣 新浪微博
向文章付费 请作者吃饭
相关文章
1 [翻译]R入门25招,第13招:比例的置信区间
2 [翻译]R入门25招,第25招:访问包中的函数
3 RSPerl:在Perl里面调用R
4 [翻译]R入门25招 第3招:查看R的文档
5 [翻译]R入门25招 第7招:创建向量
第3招:查看R的文档
Posted on 2011年4月13日 by 陈钢
问题
要阅读R附带的文档。
解决方案
执行help.start函数可以看到文档的目录:
代码
1
<span class="pun">></span><span class="pln"> help</span><span class="pun">.</span><span class="pln">start</span><span class="pun">()</span>
这里有链接指向所有已安装的文档。
讨论
R本身都附带了上千页内容丰富的文档。在安装其它的包时,相应的文档也会安装到电脑上。
用help.start函数可以很方便的浏览这些文档,该函数会打开一个浏览器窗口,显示出最顶层的目录,见图1-1。
图1-1 R文档目录
在References部分中有两个链接是特别有用的:
· Packages
点击这个链接能看到所有已经安装的包,包括基础包和额外安装的包。点击各个包的名称,就能看到其中的函数和数据集。
· Search Engine \& Keyword
这是一个简单的搜索引擎,可以用关键字搜索文档。这里还有一些按主题组织的常见关键字,点击这些关键字能看到与其相关的页面。
扩展阅读
本地计算机上的文档其实跟R项目网站上的文档是一样的,网站上的文档经常会更新。
关于作者
陈钢, 华大基因, 研究员
长沙土鳖,Linux系统初级管理员,Perl入门级程序员,R菜鸟,LaTeX爱好者,Python学习者,业余Web开发人员,生物信息学和系统生物学门外汉~
Blog 豆瓣 新浪微博
向文章付费 请作者吃饭
相关文章
1 [翻译]R入门25招,第16招:画散点图
2 [翻译]R入门25招,第19招:画直方图
3 [翻译]R入门25招,第17招:画柱状图
4 [翻译]R入门25招,第23招:检查线性回归
5 [翻译]R入门25招 第4招:在网上搜索帮助信息
第4招:在网上搜索帮助信息
Posted on 2011年4月19日 by 陈钢
问题
在网络上搜索跟R有关的信息和问题解答。
解决方案
在R中,可以用RSiteSearch函数搜索关键字或短语:
代码
1
<span class="pun">></span><span class="pln"> </span><span class="typ">RSiteSearch</span><span class="pun">(</span><span class="str">"key phrase"</span><span class="pun">)</span>
如果用浏览器的话,可以用这些网站搜索R相关的信息:
§ http://rseek.org
这是一个针对跟R有关的网站的Google自定义搜索。
§
Stack Overflow是一个具有搜索功能的Q&A网站,主要是面向一些编程方面的问题,例如数据结构、编码和图形等。
§
Stack Exchange上的统计分析(Statistical Analysis)区也是一个有搜索功能的Q&A网站,但这个网站更加偏向于统计,而不是编程。
讨论
RSiteSearch函数会打开一个浏览器窗口,并打开R项目网站的搜索引擎。在这里能看到一个可以继续优化的初始搜索结果。例如,下面这个命令会搜索“canonical correlation”:
代码
1
<span class="pun">></span><span class="pln"> </span><span class="typ">RSiteSearch</span><span class="pun">(</span><span class="str">"canonical correlation"</span><span class="pun">)</span>
这非常不方便,不用离开R,就可以完成一些快速的搜索。但是,这个搜索只局限于R的文档和邮件列表的存档。
RSeek.org提供了范围更广的搜索。RSeek利用了Google搜索引擎的强大功能,但专注于跟R相关的网站。所以,用RSeek不会像在一般的Google中那样搜出一大堆无关的的搜索结果。RSeek.org最给力的地方是其搜索结果的组织非常直观方便。
图1-2 RSeek.org的搜索结果
如1-2展示了在RSeek.org中搜索“canonical correlation”的搜索结果。网页的左侧是从各个R网站中搜索出来的内容。网页的右侧的标签就是将这些搜索结果组织成如下几个类:
§ Introduction,简介
§ Task Views,任务视图
§ Support Lists,支持列表
§ Functions,函数
§ Books,书
§ Blogs,博客
§ Related Tools,相关的工具
例如,点击Introductions标签,就能看到各种教程。Task Views标签中则是跟搜索词有关的Task View。类似的,Functions标签中的链接则是指向相关的R函数。这是一种组织搜索结果的好办法。
Stack Overflow也被称为Q&A网站,意思就是任何人可以在网站上提问,有经验的用户则会回答问题——一个问题通常会有多个答案。读者给答案投票,最好的答案就会逐步地升到顶部。这样就构成了一个能搜索的庞大的Q&A对话数据库。Stack Overflow显然是面向问题的,而且上面的话题通常更侧重于R的程序设计。
Stack Exchange(不是Overflow)有一个专门的Statistical Analysis(统计分析)分区。这里更关注的是统计,而不是编程。所以,如果读者的问题更侧重于一般的统计学而不是R本身的话,可以到这里来提问。
扩展阅读
如果找到了有用的软件包,用install.packages函数就能将软件包安装到电脑上。
关于作者
陈钢, 华大基因, 研究员
长沙土鳖,Linux系统初级管理员,Perl入门级程序员,R菜鸟,LaTeX爱好者,Python学习者,业余Web开发人员,生物信息学和系统生物学门外汉~
Blog 豆瓣 新浪微博
向文章付费 请作者吃饭
相关文章
1 [翻译]R入门25招,第15招:检验相关性的显著性
2 [翻译]R入门25招 第3招:查看R的文档
3 [翻译]R入门25招,第18招:画箱图
4 [翻译]R入门25招,第16招:画散点图
5 [翻译]R入门25招,第23招:检查线性回归
第5招:读取表格数据文件
Posted on 2011年4月27日 by 陈钢
问题
读取含有数据表格的文本文件。
解决方案
用read.table函数,该函数会返回一个数据框(data frame):
代码
1
<span class="pun">></span><span class="pln"> dfrm </span><span class="pun"><-</span><span class="pln"> read</span><span class="pun">.</span><span class="pln">table</span><span class="pun">(</span><span class="str">"filename.txt"</span><span class="pun">)</span>
讨论
表格数据文件是很常见的。这是一种格式简单的文本文件:
§ 每一行是一条记录
§ 在每条记录中,各个字段之间都用一个字符分给,例如空格、制表符、逗号、分号等
§ 每条记录的字段的数量是一样的
这种格式比固定宽度的格式更加灵活,每个字段的位置不再需要对齐。下面就是一个名为statisticians.txt的表格文件,是用空格符分割字段的:
代码
1
2
3
4
5
<span class="typ">Fisher</span><span class="pln"> R</span><span class="pun">.</span><span class="pln">A</span><span class="pun">.</span><span class="pln"> </span><span class="lit">1890</span><span class="pln"> </span><span class="lit">1962</span><span class="pln">
</span><span class="typ">Pearson</span><span class="pln"> </span><span class="typ">Karl</span><span class="pln"> </span><span class="lit">1857</span><span class="pln"> </span><span class="lit">1936</span><span class="pln">
</span><span class="typ">Cox</span><span class="pln"> </span><span class="typ">Gertrude</span><span class="pln"> </span><span class="lit">1900</span><span class="pln"> </span><span class="lit">1978</span><span class="pln">
</span><span class="typ">Yates</span><span class="pln"> </span><span class="typ">Frank</span><span class="pln"> </span><span class="lit">1902</span><span class="pln"> </span><span class="lit">1994</span><span class="pln">
</span><span class="typ">Smith</span><span class="pln"> </span><span class="typ">Kirstine</span><span class="pln"> </span><span class="lit">1878</span><span class="pln"> </span><span class="lit">1939</span>
read.table函数就是用来读取这种文件的。缺省情况下,该函数认为数据字段是由空白(空格或制表符)分割的:
代码
1
2
3
4
5
6
7
8
<span class="pun">></span><span class="pln"> dfrm </span><span class="pun"><-</span><span class="pln"> read</span><span class="pun">.</span><span class="pln">table</span><span class="pun">(</span><span class="str">"statisticians.txt"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">></span><span class="pln"> </span><span class="kwd">print</span><span class="pun">(</span><span class="pln">dfrm</span><span class="pun">)</span><span class="pln">
V1 V2 V3 V4
</span><span class="lit">1</span><span class="pln"> </span><span class="typ">Fisher</span><span class="pln"> R</span><span class="pun">.</span><span class="pln">A</span><span class="pun">.</span><span class="pln"> </span><span class="lit">1890</span><span class="pln"> </span><span class="lit">1962</span><span class="pln">
</span><span class="lit">2</span><span class="pln"> </span><span class="typ">Pearson</span><span class="pln"> </span><span class="typ">Karl</span><span class="pln"> </span><span class="lit">1857</span><span class="pln"> </span><span class="lit">1936</span><span class="pln">
</span><span class="lit">3</span><span class="pln"> </span><span class="typ">Cox</span><span class="pln"> </span><span class="typ">Gertrude</span><span class="pln"> </span><span class="lit">1900</span><span class="pln"> </span><span class="lit">1978</span><span class="pln">
</span><span class="lit">4</span><span class="pln"> </span><span class="typ">Yates</span><span class="pln"> </span><span class="typ">Frank</span><span class="pln"> </span><span class="lit">1902</span><span class="pln"> </span><span class="lit">1994</span><span class="pln">
</span><span class="lit">5</span><span class="pln"> </span><span class="typ">Smith</span><span class="pln"> </span><span class="typ">Kirstine</span><span class="pln"> </span><span class="lit">1878</span><span class="pln"> </span><span class="lit">1939</span>
如果不是用空白分割符,可以用用sep参数指定分隔符。例如,如果字段分隔符是冒号(:),就可以这样读取:
代码
1
<span class="pun">></span><span class="pln"> dfrm </span><span class="pun"><-</span><span class="pln"> read</span><span class="pun">.</span><span class="pln">table</span><span class="pun">(</span><span class="str">"statisticians.txt"</span><span class="pun">,</span><span class="pln"> sep</span><span class="pun">=</span><span class="str">":"</span><span class="pun">)</span>
从输出中看不出什么问题,但实际上read.table会把姓和名视作factor,而不是字符串。我们可以查看一下这两列的class:
代码
1
2
<span class="pun">></span><span class="pln"> </span><span class="kwd">class</span><span class="pun">(</span><span class="pln">dfrm$V1</span><span class="pun">)</span><span class="pln">
</span><span class="pun">[</span><span class="lit">1</span><span class="pun">]</span><span class="pln"> </span><span class="str">"factor"</span>
为了不让read.table将字符串视为factor,把stringAsFactor参数设为FALSE:
代码
1
2
3
<span class="pun">></span><span class="pln"> dfrm </span><span class="pun"><-</span><span class="pln"> read</span><span class="pun">.</span><span class="pln">table</span><span class="pun">(</span><span class="str">"s
展开阅读全文