参考书籍:《R语言实战》 Robert I.Kabacoff 高涛,肖楠,陈钢
主要内容:R的安装、熟悉R语言、运行R程序
1.1 为何要使用R?
free
完整性
顶尖制图功能
可进行交互式数据分析和探索的强大平台
多个数据源数据转化成可用形式便捷
易于扩展的快速编程语言
更新速度迅捷
便捷的GUI(Graphical User Interface)工具
运行多平台上。
1.2 R的获取和安装
R可以在CRAN(Comprehensive R Archive Network)上免费下载
1.3 R的使用
R是一种区分大小写的解释型语言。
你可以在命令提示符(>)后每次输入并执行一条命令,或者一次性执行写在脚本文件中的一组命令。
R语句由函数和赋值构成。R使用 <-,而不是传统的 = 作为赋值符号。
注释由符号 # 开头
1.3.1 新手上路
让我们通过一个简单的虚构示例来直观地感受一下这个界面。假设我们正在研究生理发育问题,并收集了10名婴儿在出生后一年内的月龄和体重数据(见表1-1)。我们感兴趣的是体重的分布及体重和月龄的关系。
[图片上传失败...(image-dacc95-1582635117243)]
分析:使用函数c()以向量的形式输入 月龄和体重 数据,次函数可将其参数组合成一个向量或者列表。然后利用其它函数获得 体重的均值和标准差,以及月龄和体重的相关度,最后用图形展示月龄和体重的关系,这样就可以用可视化的方式检查其中可能存在的趋势。
函数q()将结束会话并允许你退出R。
weight <- c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1)
mean(weight)
[1] 7.06
cor(age,weight)
[1] 0.9075655
cor(age,weight)
[1] 0.9075655
plot (age,weight)
q()
1.3.2 获得帮助
R提供了大量的帮助功能,学会如何使用这些帮助文档可以在相当程度上助力你的编程工作。R的内置帮助系统提供了当前已安装包中所有函数的细节、参考文献以及使用示例。
函数 | 功能 |
---|---|
help.start() | 打开帮助文档首页 |
help("foo")或('foo') | 查看函数foo的帮助(引号可以省略) |
help.search ("foo") 或??foo | 以foo为关键词搜索本地帮助文档 |
example("foo") | 函数foo的使用实例(引号可以省略) |
RSiteaSearch("foo") | 以foo为关键词搜索在线文档和邮件列表存档 |
apropos("foo",mode="function") | 列出名称中含有foo的所有可用函数 |
data() | 列出当前已加载包中所含所有可用的示例数据集 |
vignette() | 列出当前已安装包中所有可用的vignette文档 |
vignette("foo") | 为主题foo显示指定的vignette文档 |
函数help.start()会打开一个浏览器窗口,我们可在其中查看入门和高级的帮助手册、常见问题集,以及参考材料。
函数RSiteSearch()可在在线帮助手册和R-Help邮件列表的讨论存档中搜索指定主题,并在浏览器中返回结果。
由函数vignette()函数返回的vignette文档一般是PDF格式的实用介绍性文章。并非所有的包都提供了vignette文档。
1.3.3 工作空间
工作空间(workspace)就是当前R的工作环境,它储存着所有用户定义的对象(向量、矩阵、函数、数据框、列表)。
工作目录(working directory)是R用来读取文件和保存结果的默认目录。我们可以使用函数getwd()来查看当前的工作目录,或使用函数setwd()****设定当前的工作目录。
表1-2
函数 | 功能 |
---|---|
getwd() | 显示当前的工作目录 |
setwd("mydirectory") | 修改当前的工作目录为mydirectory |
ls() | 列出当前工作空间的对象 |
rm(obejectlist) | 移除(删除)一个或多个对象 |
help(options) | 显示可用选项的说明 |
history(#) | 显示最近使用过的#个命令(默认值为25) |
savehistory("myfile") | 保存命令历史到文件myfile中(默认值为.Rhistory) |
loadhistory("myfile") | 载入一个命令历史文件(默认值为.Rhistory) |
save.image("myfile") | 保存工作空间到文件myfile中(默认值为.RDate) |
save(objectlist,file="myfile") | 保存指定对象到一个文件中 |
load("myfile") | 读取一个工作空间到当前会话中(默认值为.RData) |
q() | 推出R。将会询问你是否保存工作空间。 |
1.3.4 输入和输出
-
输入
函数source("filename")可在当前会话中执行一个脚本。
-
文本输出
函数sink("filename")将输出重定向到文件filename中。
-
图形输出
要重定向图形输出,使用表1-3中列出的函数即可。最后使用dev.off()将输出返回到终端。
函数 输出 pdf("filename.pdf") PDF文件 win.metafile("filename.wmf") Windows 图元文件 png(“filename.png”) PBG文件 jpeg("filename.gpg") JPEG文件 bmp("filename.bmp") BMP文件 postscript("filename.ps") PostScript文件1.4 包
1.4 包
目前有2500多个 称为包(package) 可下载。
这些包提供了横跨各种领域、数量惊人的新功能,包括分析地理数据、处理蛋白质质谱,甚至是心理测验分析的功能。
1.4.1 什么是包
包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。
计算机上存储包的目录称为库(library)。
函数.libPaths()能够显示库所在的位置, 函数library()则可以显示库中有哪些包。
R自带了一系列默认包(包括base、datasets、utils、grDevices、graphics、stats以methods),它们提供了种类繁多的默认函数和数据集。其他包可通过下载来进行安装。安装好以后,它们必须被载入到会话中才能使用。命令search()可以告诉你哪些包已加载并可使用。
1.4.2 包的安装
第一次安装第一个包:
install.package(): 不加参数执行install.packages()将显示一个CRAN镜像站点的列表,选择其中一个镜像站点之后,将看到所有可用包的列表,选择其中的一个包即可进行下载和安装。
如果知道自己想安装的包的名称,可以直接将包名作为参数提供给这个函数。
一个包仅需安装一次。但和其他软件类似,包经常被其作者更新。使用命令update.packages()可以更新已经安装的包。
要查看已安装包的描述,可以使用installed.packages()命令,这将列出安装的包,以及它们的版本号、依赖关系等信息。
1.4.3 包的载入
library()命令载入这个包
1.4.4 包的使用方法
载入一个包之后,就可以使用一系列新的函数和数据集了。
包中往往提供了演示性的小型数据集和示例代码,能够让我们尝试这些新功能。帮助系统包含了每个函数的一个描述(同时带有示例),每个数据集的信息也被包括其中。
命令help(package="package_name")可以输出某个包的简短描述以及包中的函数名称和数据集名称的列表。使用函数help()**可以查看其中任意函数或数据集的更多细节。
R语言编程中常见的错误:
使用了错误的大小写。help()、Help()和HELP()是三个不同的函数(只有第一个是正确的)。
忘记使用必要的引号。install.packages("gclus")能够正常执行,然而Install.packages(gclus)将会报错。
在函数调用时忘记使用括号。例如,要使用help()而非help。即使函数无需参数,仍需加上()。
在Windows上,路径名中使用了\。R将反斜杠视为一个转义字符。setwd("c:\ mydata")会报错。正确的写法是setwd("c:/mydata")或setwd("c:\mydata")。
使用了一个尚未载入包中的函数。函数order.clusters()包含在包gclus中。如果还没有载入这个包就使用它,将会报错。
1.5批处理
没看懂,略吧
1.6将输出用为输入--结果的重用
R的一个非常实用的特点是,分析的输出结果可轻松保存,并作为进一步分析的输入使用。
1.7处理大数据集
举例来说,在我服役了5年的2G内存Windows PC上,我可以轻松地处理含有1000万个元素的数据集(100个变量×100 000个观测)。在一台4G内存的iMac上,我通常可以不费力地处理含有上亿元素的数据。
但是也要考虑到两个问题:数据集的大小和要应用的统计方法。R可以处理GB级到TB级的数据分析问题,但需要专门的手段。大数据集的管理和分析问题留待附录G中讨论。