书名:R语言医学数据分析实战
ISBN:978-7-115-53915-1
本书由人民邮电出版社发行数字版。版权所有,侵权必究。
您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。
我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。
如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。
著 赵 军
责任编辑 王峰松
人民邮电出版社出版发行 北京市丰台区成寿寺路11号
邮编 100164 电子邮件 315@ptpress.com.cn
网址 http://www.ptpress.com.cn
读者服务热线:(010)81055410
反盗版热线:(010)81055315
本书以医学数据为例,讲解如何使用R进行数据分析,结合大量精选的实例对常用分析方法进行了深入浅出的介绍,以帮助读者解决医学数据分析中的实际问题。
本书共分为14章,第1章~第3章介绍了R语言的基本用法;第4章介绍了数据可视化;第5章介绍了基本的统计分析方法;第6章~第8章介绍了医学研究中最常用的三种回归模型;第9章介绍了生存分析的基本方法;第10章~第12章介绍了几种常用的多元统计分析方法;第13章介绍了临床诊断试验的统计评价指标和计算方法;第14章介绍了在医学科研实践中常用的Meta分析方法。
本书适用于临床医学、公共卫生及其他医学相关专业的本科生和研究生使用,亦可作为其他专业的学生和科研工作者学习数据分析的参考书。阅读本书,读者不仅能掌握使用R及相关包快速解决实际问题的方法,还能更深入地理解数据分析。
大数据给生物医学领域带来了巨大的影响,而生物医学领域的发展离不开数据分析。数据的开发、利用、整理和分析为临床实践及科学研究提供了大量有价值的信息。
医学研究中的数据分析离不开计算机统计软件。R语言最早由新西兰奥克兰大学统计学系的Ross Ihaka和Robert Gentleman两位教授编写,并于1997年成立了一个核心团队负责管理和更新。国际上许多知名的统计学家和计算机科学家也不断利用R语言开发新的统计软件包供用户使用。R给用户提供了一个开放的统计分析和制图环境,因而其应用日益广泛。
本书从医学临床实践和科研中的实际问题出发,运用R语言结合具体的应用案例深入浅出地介绍了经典的数据分析方法。统计方法的学习需要和相应的计算机软件的学习紧密结合,要深入到应用领域中去。在一定的环境条件下,从实践中获取的知识比单纯通过课堂讲授所学到的知识要扎实得多。常言道“实践出真知”就是这个道理。
本书的作者具有很好的数学基础,长期在医学院校讲授医学统计学,具有丰富的教学经验。在介绍统计方法时,本书没有拘泥于烦琐而非必要的细节,让读者很容易看到问题的本质和整体结构,并很快获取重要信息。无论从统计方法或编程的角度,还是从应用的角度,本书对于广大读者都具有很好的参考价值。
预期本书的出版对于推动我国医学统计学和R语言的应用将具有积极的意义。
华中科技大学同济医学院
2019年12月16日
在大数据时代,数据分析无疑是最红火的技术之一。随着我国医疗卫生事业的发展与壮大,广大医学工作者对数据分析方法的需求也越来越大。医学数据分析已经成为当前的热门领域,它是医学、统计学和计算机科学等领域的交叉学科。数据分析离不开软件。R是一款免费开源软件,它提供了先进的统计计算与可视化功能。本书的主要目的是结合医学数据介绍如何使用R进行数据分析,帮助读者解决数据分析中的实际问题。
本着让非统计专业读者易理解的原则,本书强调实战和应用,着重介绍数据分析的思路和方法,以及数据分析的实质、特点、应用条件和结果,尽量淡化统计方法的推导和计算。第1章和第2章介绍了R语言的基本用法;第3章介绍了数据预处理的方法,涵盖了基本的数据处理和一些高级数据操作的技巧;第4章介绍了如何用R语言进行数据可视化;第5章介绍了基本统计分析方法,包括描述性统计分析和各种单因素分析方法;第6章至第8章结合实际数据介绍了医学研究中最常用的三种回归模型,即线性回归、Logistic回归和Poisson回归;第9章介绍了生存分析;第10章至第12章介绍了几种最常用的多元分析方法,即聚类分析、判别分析、主成分分析和因子分析;第13章介绍了临床诊断试验的评价指标和计算方法;第14章介绍了循证医学研究中常用的Meta分析方法。
本书假定读者有一定的统计学基础,了解诸如均值、标准差等常用的统计量,以及t检验、χ2检验等基本的统计推断方法。书中配有大量的案例解析和程序示例,以及使用R绘制的图形,所有代码均在R 3.6.0环境下运行通过,书中的数据绝大部分都包含在各个R包里,读者只需加载相关包就可以直接使用。书中每一章都配有练习题,书末附有习题的参考答案。书中示例和习题解答的源程序文件可以从异步社区(https://www.epubit.com)下载。为了降低印刷成本,书中的图片以黑白形式呈现,如果读者运行书中代码,得到的图形将会是彩色的。此外,书中所有R语言的函数,均会带上小括号,以便同普通文本区分,函数名的索引附在书后以方便读者速查。
本书适合临床医学、公共卫生及其他医学相关专业的本科生或研究生使用,亦可作为其他专业的学生和科研工作者进行数据分析的参考书。读者可以从头至尾逐章学习,也可以根据自己在实际中遇到的问题有选择地在相应章节寻找解决方案。希望本书能够让读者更深入地理解数据分析,并进一步促进R语言在国内的普及。
感谢华中科技大学同济医学院公共卫生学院的余松林教授审阅本书并为本书作序。对于本书,余教授提出了许多宝贵的意见,帮助我改正了不少错误。余教授丰富的学识、严谨的治学态度和高尚的敬业精神使我受益匪浅、终生难忘。感谢我的老师泰国宋卡王子大学的Virasakdi Chongsuvivatwong教授、Hutcha Sriplung教授、Alan Geater博士和Edward McNeil副教授在我学习和使用R语言进行数据分析时的悉心指导。
本书参阅了许多国内外教材和资料,在此向相关作者表示衷心的感谢。本书得到了湖北医药学院研究生院和公共卫生与管理学院的支持,在此也表示诚挚的谢意。此外,特别感谢人民邮电出版社的王峰松编辑在本书出版过程中给予的支持和协助。
由于笔者水平有限,书中难免有不妥和谬误之处,欢迎读者不吝指正并提出宝贵建议,我的电子邮箱地址是zhaojun@hbmu.edu.cn。
赵 军
于湖北医药学院
2019年10月
本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。
本书提供如下资源:
书中示例和习题解答的源程序文件;
书中彩图文件。
要获得以上配套资源,请在异步社区本书页面中单击,跳转到下载界面,按提示进行操作即可。注意:为保证购书读者的权益,该操作会给出相关提示,要求输入提取码进行验证。
作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。
当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,单击“提交勘误”,输入勘误信息,单击“提交”按钮即可,如下图所示。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。
我们的联系邮箱是contact@epubit.com.cn。
如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。
如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/ selfpublish/submission即可)。
如果您是学校、培训机构或企业用户,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。
如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。
“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。
“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、人工智能、软件测试、前端、网络技术等。
异步社区
微信服务号
本章主要介绍为什么要使用R,以及初次使用R时的一些基本操作,包括安装、获取帮助、R命令的基本语法和其他文档操作等。
R语言的前身是S语言,S语言是John M. Chambers和他的同事们于1976年在贝尔实验室开发的一种专用于统计分析的解释型语言。这种语言后来发展成一个商用版本S-PLUS,并被全世界的统计学家广泛使用。
1992年,新西兰奥克兰大学的Ross Ihaka和Robert Gentleman为了教学目的基于S语言开发了一门新的语言,并根据二人名字的首字母,将其命名为R。1995年,R作为开源软件发布,两位作者也吸纳了其他开发者参与R的更新。到了1997年的时候,成立了11人的R语言核心团队,从2011年至今,该团队一直维持在20人。
R语言早期主要是学术界统计学家在用,后来逐渐被其他很多领域的学者使用。尤其是随着大数据的爆发,越来越多有计算机和工程背景的人加入这个圈子,对R的计算引擎、性能以及各种程序包进行改进和升级,大大推动了R语言的发展。
医学数据分析是统计学与医学专业知识的结合。而无论是统计计算还是数据的可视化都离不开计算机软件。市面上有很多流行的统计和作图软件,如SAS、SPSS、Stata等。为何要选择R呢?具体来讲,R有如下优势。
(1)大多数统计软件需要付费,而R是基于GNU通用公共许可协议发布的,它可以免费使用和传播。
(2)R可以在多种平台下使用,如Windows、macOS、各种版本的Linux和UNIX等。有用户甚至在浏览器和手机操作系统上运行R。
(3)R编程简单,仅需要熟悉一些函数的参数和用法,不需要了解程序实现的细节。
(4)R小巧但功能强大,被称为数据分析界的“瑞士军刀”。R的安装文件大小不到100MB,大部分函数存在于扩展包里。这些扩展包涵盖了各行各业中数据分析的前沿方法。
(5)R实现了可重复性分析,用户可以从重复性分析工作中抽身出来,也能与同行分享分析过程并从中获益。借助R及其扩展包,用户能在一份文档中混合编写R代码和标记文本,并自动生成分析报告。
但是R也存在一些固有缺点,例如学习曲线相对比较陡峭、第三方包的质量良莠不齐等。在本书的学习过程中,建议读者“边学边做”,即输入书中的代码、观察输出结果,并尝试改变代码(例如函数里的参数)以掌握R的用法。另外,建议读者尽量使用官方网站的扩展包或者有经验的用户推荐的包。本书中使用的包全都来自R主站,而且都是笔者长期使用和验证过的,读者可以放心下载、安装和使用。
如果读者使用的是Windows操作系统,可以从R主站下的网页https://cran.r-project.org/ bin/windows/base/下载最新版本的R安装文件,下载完成后双击该.exe执行文件就可以进行安装。安装过程中全程默认即可,R会自动检测计算机操作系统所使用的语言,并在菜单和对话框中用该语言显示。例如,如果使用的是中文Windows操作系统,则菜单和对话框将会用中文显示。安装成功后,R的快捷方式图标应该会出现在桌面上或者程序菜单里。
如果读者使用的是macOS,首先从https://cran.r-project.org/bin/macosx/下载二进制的安装文件,然后默认安装即可。
双击R图标即可启动R。下面的信息将会显示在R控制台上。
R version 3.6.0 (2019-04-26) -- "Planting of a Tree"
Copyright (C) 2019 The R Foundation for Statistical Computing
Platform: x86_64-w64-mingw32/x64 (64-bit)
R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.
R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.
Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.
>
在本书中,R命令和输出将采用CourierNew字体在浅灰色背景下显示。第一段显示的是R 3.6.0版本的信息,该版本于2019年4月26日发布。第二段信息简要解释了版权和许可问题。第三段提供了有关R的贡献者以及如何在出版物中引用R。第四段为初次使用R的用户提供了一些建议尝试的命令。最下面的符号“>”是命令输入提示符,用户可以在后面直接输入命令。例如:
> print("Hello, world")
[1] "Hello, world"
R提供的是一种交互式的运行环境,用户输入需要执行的命令,然后按Enter键将命令提交给R。如果命令符合语法规则,R就会执行该命令,并将输出结果直接显示在后面。
在进行数据分析时,通常需要输入很多命令来完成一项工作,这时在R控制台编辑命令将会很不方便。R本身提供了一个简单的图形用户界面(Graphic User Interface,GUI),即R编辑器,但是其功能非常有限。RStudio是目前最受欢迎的R语言编辑器之一。它除了具有高亮显示代码、自动补全命令等基本功能,还提供了图形设备、对象管理器、调试工具等高级功能。我们可以从RStudio的主页免费下载其Desktop版本。RStudio的启动界面如图1-1所示,由代码编辑区(左上)、命令控制台(左下)、环境资源栏(右上)和其他菜单栏(右下)组合而成。
图1-1 RStudio启动界面
代码编辑区可以进行代码的编辑和调试。代码运行后会在下方的命令控制台显示相应的代码和返回结果。也可以在命令控制台单独输入命令,这和R的命令模式相同。环境资源栏显示当前工作环境下的全部对象,以及输入命令的历史记录。其他菜单栏包括文件管理(Files)、图形输出(Plots)、包(Packages)、帮助文档(Help)等。
最上面的菜单栏与其他常用软件类似,包括文件(File)、编辑(Edit)、查看(View)、工具(Tools)和帮助(Help)等。其中,最常用的是工具菜单下面的全局选项(Global Options)命令,里面包含了很多关于文件管理和代码编辑的设置。这里可以将其中的默认工作目录(Default working directory)设为自己定义的一个文件夹。用户还可以根据不同的项目在工作目录文件夹下创建多个子文件夹。另外,建议将退出时保存工作空间(Save workspace to .Rdata on exit)从“总是”(Always)改为“从不”(Never)。菜单栏最右边的帮助(Help)菜单里的“Cheatsheets”提供了RStudio旗下的几个功能强大的扩展包的函数备忘单;“Keyboard Shortcuts Help”给出了代码编辑的快捷键,使用常用的快捷键会大幅提高代码编辑的效率。
R可以被定义为包含许多经典和现代统计技术(称为函数)的运行环境。这些技术中有一些是内置在R的基础环境中的,但更多的是借助扩展包(简称包)补充提供的。包是实现特定功能的函数、数据集和文档的集合。
R包可分为3类:(1)基本包,它们在R启动时就自动调入内存,以满足基本的数据处理和统计分析要求;(2)备用包(或称为“推荐包”),这些包已随R安装而安装,但需要用函数library( )或require( )调入内存后才能使用;(3)捐赠包,这些包由全世界各专业领域的统计学专家各自独立发布,用户需要单独下载,然后再用函数library( )或require( )调入内存后才能使用。
安装R时默认安装了大约25个包,更多的包可通过CRAN(the Comprehensive R Archive Network)获得。目前CRAN上有超过10000个包,这些包涵盖多个领域,从统计计算到机器学习,从生物信息到社会网络分析,可以说无所不包。
想要查看当前哪些包被加载到了内存中,可以输入:
> search()
[1] ".GlobalEnv" "package:methods" "package:stats"
[4] "package:graphics" "package:grDevices" "package:utils"
[7] "package:datasets" "Autoloads" "package:base"
所有“package:”后面都是已经加载的包的名称。从上面的输出可以看到,一共有7个基本包被加载到了内存中。
R包的安装有多种方式,安装时请确保计算机处于联网状态。
在R的菜单交互界面下,单击“程序包”→“安装程序包”按钮后选择一个镜像站点。镜像站点列表以国家名为前缀,一般选择自己所在国家的镜像站点下载速度会比较快。找到需要安装的包的名字,然后单击“确定”即可安装。
如果使用RStudio,可以通过单击RStudio界面右下方其他菜单栏的“Packages”→“Install”按钮,然后输入包的名字进行安装。
或者,在R或RStudio的控制台使用函数install.packages( )进行安装。例如:
> install.packages("epiDisplay")
上面的命令安装了名为“epiDisplay”的包。R同时也安装了foreign、survival、MASS和nnet四个包,这是因为epiDisplay包的建立是基于这四个包的。
除了基本包以外,备用包和捐赠包都需要用函数library( )或require( )加载到内存以后才能使用其中的函数或数据集。例如:
> library(epiDisplay)
Loading required package: foreign
Loading required package: survival
Loading required package: MASS
Loading required package: nnet
正如上面所述,加载epiDisplay包的同时也加载了另外四个包,这四个包里面的函数和数据集现在也可以使用了。
一个R包仅需安装一次,但R包经常会有更新,尤其是捐赠包。要想更新包,单击RStudio界面右下方其他菜单栏的“Packages”→“Update”按钮,就会看到目前可以更新的包,勾选要更新的包后单击“Install Updates”即可。或者,在控制台使用函数update.packages( )更新包,例如:
> update.packages("epiDisplay")
在使用R时,在线帮助是非常有用的,尤其是对于初学者来说。输入以下命令:
> help.start()
系统将从R的主菜单上打开一个浏览器窗口,我们可以在其中查看入门和高级的帮助手册、常见问题集,以及参考材料等。推荐读者首先阅读“An Introduction to R”。另一个有意思的部分是“Packages”,单击这里可以看到所有可以使用的包。单击包里函数的函数名,将会看到该函数的帮助文档。我们也可以使用函数help( )获取帮助文档。例如,为了得到函数mean( )的帮助信息,可以输入:
> help(mean)
或者,更简单地,输入:
> ?mean
R包中的大多数函数都附带例子,函数example( )用于运行示例代码。例如:
> example("mean")
mean> x <- c(0:10, 50)
mean> xm <- mean(x)
mean> c(xm, mean(x, trim = 0.10))
[1] 8.75 5.50
从上面的示例代码可以看出,函数mean( )可用于计算一组数据的算术平均值或截尾均值。
如果不记得函数的准确名字,可以使用函数help.search( )进行模糊搜索。例如:
> help.search("test")
或者,更简单地,输入:
> ??test
然后,我们就可以在搜索结果中找到想要获取的相关帮助文档了。
R的一个最基本但又很有用的功能是进行简单的数值计算。表1-1列出了R中常用的算术运算符。
表1-1 算术运算符
运算符 |
描述 |
---|---|
+ |
加法 |
− |
减法 |
* |
乘法 |
/ |
除法 |
^或** |
求幂 |
%% |
求余 |
%/% |
整数除法 |
下面分别使用这些运算符,看看会得到什么样的结果。
> 1 + 1
[1] 2
> 2*3
[1] 6
> 4/2
[1] 2
> 2^3
[1] 8
对于稍微复杂一些的数值计算,R提供了一系列的数学函数。表1-2列举了其中的一部分常用函数。
表1-2 常用数学函数
函数 |
描述 |
---|---|
abs(x) |
求x的绝对值 |
sqrt(x) |
求x的平方根 |
sin(x)、cos(x)、tan(x) |
求x的正弦、余弦、正切 |
asin(x)、acos(x)、atan(x) |
求x的反正弦、反余弦、反正切 |
exp(x) |
求x的e指数 |
log(x)、log2(x)、log10(x) |
求x的自然对数、以2为底的对数、以10为底的对数 |
round(x, n) |
四舍五入x到指定位数 |
ceiling(x) |
求不小于x的最小整数 |
floor(x) |
求不大于x的最大整数 |
trunc(x) |
截取x的整数部分 |
例如,计算25的平方根:
> sqrt(25) # 计算25的平方根
[1] 5
括号前面的表达式称为函数名,括号里的内容为函数的参数选项。因此在上面例子中,“sqrt”是一个函数名,当输入25时,结果为5。符号“#”后面的文字是对代码的说明,R会自动忽略每行命令里面“#”后面所有的输入。对比较复杂的代码添加注释是一个很好的习惯。
想要得到e的数值,输入:
> exp(1)
[1] 2.718282
类似地,e−3的值为:
> exp(-3)
[1] 0.04978707
当输入正确的命令时,R将执行相应的计算。如果左括号的数目多于右括号的数目时按下了Enter键,则新的一行将会显示“+”号,提示等待这个命令的完成。当左右括号数相等后,R就会执行计算并显示结果。
> log(3.2
+ )
[1] 1.335001
如果括号不匹配,结果就会提示出现语法错误。
> log(3.2))
Error: syntax error
在R中,用“pi”表示圆周率,它是一个无理数,即无限不循环小数。
> pi
[1] 3.141593
对于小数位数很多的数值,R的默认输出显示7位有效数字。如果想把pi四舍五入,只保留两位小数,可以使用函数round( ):
> round(pi, digits = 2)
[1] 3.14
其中,“digits”是函数round( )里的一个参数,我们可以改变它的值以得到不同的输出效果。此外,因为这个参数位于该函数所有参数的第二个位置,所以参数名在这里可以省略,R会自动将第二个输入的值赋给该参数。例如:
> round(pi, 4)
[1] 3.1416
面向对象是R语言的一个突出特点。在R语言中,“一切皆对象”。数据分析包括很多步骤,从数据整理、探索、建模到可视化,每个步骤都需要处理不同的对象,例如向量、矩阵、函数、模型等。
对于一些简单的计算,可以把计算结果直接显示在屏幕上而不储存。但更多的时候我们需要把结果储存在某个对象中。例如:
> a = 3 + 5
我们可以通过输入这个新建对象的名字来检查命令是否已执行成功:
> a
[1] 8
更一般地,可以输入以下命令:
> a <- 3 + 5
> a
[1] 8
对于普通用户来说,使用符号“=”和“<-”赋值没有什么太大不同。至于它们在R编程方面的不同,这里不做讨论。虽然输入符号“<-”比输入“=”略微麻烦,但建议使用“<-”符号以避免与比较操作符“==”相混淆。注意,在赋值符里“<”和“-”之间不能有空格。
R区分大小写,字符“a”与“A”的意义是不同的。这点对于初学者来说是非常值得注意的。
> A
Error: object 'A' not found
现在创建第二个对象“b”:
> b <- sqrt(36)
然后,把两个对象相加:
> a + b
[1] 14
我们也可以在左边计算它的值,然后通过右赋值“->”把结果赋给一个新的对象“c”。
> a + 3*b -> c
> c
[1] 26
但是,下述命令将不会被执行:
> a + 3b -> c
Error: syntax error
R不能识别“3b”。符号“*”是必不可少的,表示乘法。
输入如下命令是没有意义的:
> qwert
Error: Object "qwert" not found
R提示找不到该对象。问题在于“qwert”既不是一个可识别的函数,也不是一个定义了的对象。
对象的名字可以由一个或一个以上的字符组成。对象名一般只能以字母开头,可以包含数字、点“.”和下划线“_”。例如:
> xyz <- 1
> xyz
[1] 1
> hours.per.day <- 24
> hours.per.day
[1] 24
概括来说,当我们在R控制台上输入对象名时,R总是设法显示该对象的内容。如果遇到符号“=”、“<-”或“->”,值将被储存在相应位置的对象中。
前面定义的都是数值型对象,R中还有字符型和逻辑型对象等。字符型对象由字符串构成,用引号来指定。例如人的名字、地址、邮政编码等。这种类型的对象不能进行算术运算。
> A <- "Hubei University of Medicine"
> A
[1] "Hubei University of Medicine"
逻辑型对象常常是一些关系运算或逻辑运算的结果,其取值为TRUE或FALSE,可以简写为T和F。表1-3列出了常用的关系和逻辑运算符。
表1-3 关系和逻辑运算符
运算符 |
描述 |
---|---|
> |
大于 |
< |
小于 |
== |
等于 |
!= |
不等于 |
>= |
大于等于 |
<= |
小于等于 |
& |
逻辑与 |
| |
逻辑或 |
! |
逻辑非 |
现在看看下面几个命令:
> 3*3 == 3^2
[1] TRUE
> 3*2 == 3^2
[1] FALSE
> 3*2 < 3^2
[1] TRUE
注意,检查等价性需要用双等号,一个等号用于赋值。
我们可以使用“&”(逻辑与)和“|”(逻辑或)连接多个逻辑型对象,其连接结果为TRUE或FALSE。
> 3*3 == 3^2 & 3*2 == 3^2
[1] FALSE
> 3*3 == 3^2 | 3*2 == 3^2
[1] TRUE
另外,从数值上来看,TRUE的值为1,FALSE的值为0。
> TRUE == 1
[1] TRUE
> FALSE == 0
[1] TRUE
> (3*3 == 3^2) + (5 > 4)
[1] 2
工作空间(workspace)就是R的工作环境。在上面的R命令中,所有创建的对象都被临时保存在工作空间(也可称为全局环境,.GlobalEnv)中。我们可以用函数ls( )列出当前工作空间中的所有对象:
> ls()
[1] "a" "A" "b" "c" "hours.per.day" "xyz"
在退出R时,如果选择保存工作空间,R将会在工作空间所在文件夹中创建两个新文件。之前在R中输入的任何命令都将保存到一个名为“.Rhistory”的文件中,而当前工作空间中的所有对象将保存到一个名为“.Rdata”的文件中。注意,这两个文件名都没有前缀。当R下一次在这个文件夹中启动后,将自动恢复上一次保存的工作环境以及使用过的命令。如果选择不保存当前工作空间,则不会产生这两个文件,R会直接退出。
工作目录(working directory)是R用来读取文件和保存结果的一个文件夹。我们可以使用函数getwd( )来查看当前的工作目录,也可以使用函数setwd( )设定当前的工作目录。把某个分析项目的所有文件保存在一个文件夹里会给项目管理带来便利,提高分析效率。因此,在一个代码脚本文件的第一行,通常可以先设定工作目录。例如:
> setwd("C:/myprojects/project1")
注意,这里的指定路径下必须存在文件夹“project1”,如果没有,可以用函数dir.create( )创建,或者在计算机操作系统里面手动创建。
想要把当前工作空间保存到一个指定的文件,可以在退出R时输入以下命令:
> save.image("MyFile.Rdata")
文件“MyFile.Rdata”将会保存在当前工作目录下。下次我们只需使用函数load( )就可以载入保存的工作空间并继续进行该项目的分析工作。
本章中,我们认识了R,了解了它的一些优点,学会了用R进行一些简单的操作,并能够管理自己的工作空间了。本章中用到的函数及其来源包和功能描述见表1-4。
表1-4 本章中使用的函数
函数 |
来源包 |
功能描述 |
---|---|---|
dir.create( ) |
base |
创建文件夹 |
example( ) |
utils |
运行示例代码 |
exp( ) |
base |
e指数函数 |
getwd( ) |
base |
获取当前工作目录 |
help( ) |
utils |
获取帮助文档 |
help.search( ) |
utils |
在帮助系统中进行模糊搜索 |
help.start( ) |
utils |
打开帮助系统的首页 |
install.packages( ) |
utils |
安装包 |
library( ) |
base |
加载包 |
load( ) |
base |
载入R数据集 |
log( ) |
base |
对数函数 |
ls( ) |
base |
列出当前工作空间中的所有对象 |
mean( ) |
base |
求算术平均值 |
print( ) |
base |
显示对象 |
require( ) |
base |
加载包 |
round( ) |
base |
将数值四舍五入到指定小数位数 |
save.image( ) |
base |
保存当前工作空间 |
search( ) |
base |
显示搜索路径 |
setwd( ) |
base |
设置工作目录 |
sqrt( ) |
base |
求平方根 |
update.packages( ) |
utils |
更新包 |
1-1 请在R的控制台依次输入以下命令,理解R的交互过程。
> 2 + 3 * 5
> x <- 4 - pi/2
> x + 1
> print(y <- x + 1)
> round(y, 2)
1-2 请在RStudio的界面下安装“ggplot2”包和“dplyr”包,前者用于数据可视化,后者用于数据处理,我们会在后续章节用到。
1-3 在患病率调查研究中,计算样本量的公式为
其中n为样本量,p为总体的患病率,δ为估计的精确度(置信区间长度的一半)。如果患病率估计为20%,并且95%置信区间不超过估计的患病率的30%,试用R计算所需的样本量。