vlambda博客
学习文章列表

《R语言实战·第二版》学习笔记:第一章——R语言介绍


写在前面,笔者在对于《R语言实战》第二版的学习过程之中,将注重于“实战”,在学习完每个章节后,通过使用书本示例之外的或者自己的数据进行本章知识点的综合应用作为该章节的结尾。R语言实战,注重的是自己的“实践”过程,对知识点的掌握情况如何,在“输出”过程中得以体现,希望与小伙伴们共勉!

以下是正文:

本章介绍了R语言吸引学生、研究者、统计学家及数据分析师的一些优点,(例如:许多商业统计软件价格不菲,而R是免费的;它提供了各式各样的数据分析技术,并且拥有顶尖水准的制图功能;R的功能可以被整合进包括C++、Java、Python、PHP、Pentaho、SAS和SPSS等多种语言编写的应用程序。)从程序的安装出发,探索R的基本界面,并且访问大量现成可用的数据和帮助文档。

(1)R的获取和安装

步骤:先安装R,再安装Rstudio,因为R只是一个清水坊,家徒四壁,而Rstudio 则有着各种使用功能、完善并且流畅的操作空间。

第一步:R可以在CRAN(Comprehensive R Archive Network,http://cran.r-project.org)上免费下载。Linux、Mac OS X和Windows都有相应编译好的二进制版本。

第二步:Rstudio可在官网https://rstudio.com/products/rstudio/download/ 上面选择免费的版本下载。

(2)R的使用

R语句由函数和赋值构成。R使用 <- ,而不是传统的 = 作为赋值符号。例如以下语句:

a <- 3 #创建了一个名为a 的向量,a的值为3
x <- rnorm #创建了一个名为x的向量,它包含5个来自标准正态分布的随机偏差。

注意:R允许使用=为对象赋值,但是这样写的R程序并不多,因为它不是标准语法。一些情况下,用等号赋值会出现问题,R程序员可能会因此取笑你。你还可以反转赋值方向。例如,rnorm(5) -> x与上面的语句等价。重申一下,使用等号赋值的做法并不常见,在本书中不推荐使用。

注释由符号#开头。在#之后出现的任何文本都会被R解释器忽略。

(3)新手上路

一个R会话示例(婴儿月龄与体重的变化关系,数据为丛书作者虚构):

age <- c(1,3,5,2,11,9,3,9,12,3#婴儿的月龄
weight <-  c(4.4,5.3,7.2,5.2,8.5,7.3,6.0,10.4,10.2,6.1#对应婴儿的体重
mean(weight) #这10名婴儿的平均体重
sd(weight) #体重的标准差
cor(age,weight) #计算月龄跟体重的相关性
plot(age,weight) #绘画婴儿月龄跟体重的散点图

图1-1 婴儿体重(千克)和年龄(月)的散点图

(4)获取帮助

在R里面要学会使用获取帮助来查看某个陌生函数的功能介绍,可以使用help("函数名称"),或?+函数名称、??+函数名称的方法。

help.start() #打开帮助文档首页
help("dplyr"#查看函数 dplyr 的帮助(引号可以省略)
help.search("dplyr"#以 dplyr 为关键词搜索本地帮助文档
RSiteSearch("foo"#以 foo 为关键词搜索在线文档和邮件列表存档
RSiteSearch("dplyr"#以 dplyr 为关键词搜索在线文档和邮件列表存档
apropos("foo",mode = "function"#列出名称中含有 foo 的所有可用函数
data() #列出当前已加载包中所含的所有可用示例数据集
vignette() #列出当前已安装包中所有可用的 vignette 文档

(5)管理R工作空间

使用函数getwd()来查看当前的工作目录,或使用函数setwd()设定当前的工作目录。如果需要读入一个不在当前工作目录下的文件,则需在调用语句中写明完整的路径。记得使用引号闭合这些目录名和文件名。

getwd() #获取当前的工作目录
setwd("F:/R语言基础/R_basic learning"#设定当前的工作目录
setwd("F:/R语言基础/R_basic learning/R_basic learning")
#还有一个更为直观的设定当前工作目录的方法:在R的任务栏中选择“Session”→Set Working Directory→自定义选择需要的选项

注意:函数setwd()不会自动创建一个不存在的目录。如果必要的话,可以使用函数dir.create()来创建新目录,然后使用setwd()将工作目录指向这个新目录。

例如:

dir.create("C:/Users/Administrator/Desktop/R_basic learning"#创建一个在桌面的文件夹
setwd("C:/Users/Administrator/Desktop/R_basic learning"#把当前工作目录设定在该文件夹中
savehistory("myfile"#保存命令历史到文件myfile中(默认值为.Rhistory)
loadhistory("myfile"#载入一个命令历史文件(默认值为.Rhistory)
save.image("myfile"#保存工作空间到文件myfile中(默认值为.RData)

(6)输入和输出

输入函数:source(“filename”),可在当前会话中执行一个脚本。如果文件名中不包含路径,R将假设此脚本在当前工作目录中。

输出函数:sink(“filename”),默认情况下,如果文件已经存在,则它的内容将被覆盖。使用参数append=TRUE可以将文本追加到文件后,而不是覆盖它。

图形输出:

jpeg("filename.jpeg")

dev.off()

(7)包

包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。

包的使用流程:下载安装包→加载包→使用它的功能。

举个“gclus”包的下载和使用栗子:

install.packages("gclus"#下载"gclus"包
update.packages("gclus"#更新"gclus"包
library("gclus"#加载"gclus"包
search() #查看哪些包已经加载并可以使用

(8)将输出用为输入

在R里面,数据分析输出的结果可轻松保存,并作为进一步分析的输入使用。接下来使用一个R中已经预先安装好的数据集作为示例阐明这一点。

首先,利用汽车数据mtcars执行一次简单线性回归,通过车身重量(wt)预测每加仑行驶的英里数(mpg)。

lm(mpg~wt, data=mtcars)  #结果将输出在屏幕上
lmfit <- lm(mpg~wt, data=mtcars)  #这一步是执行回归,用一个对象(lmfit)保存结果

以上赋值语句创建了一个名为lmfit的列表对象,其中包含了分析的大量信息(包括预测值、残差、回归系数等)。虽然屏幕上没有显示任何输出,但分析结果可在稍后被显示和继续使用。接下来:

summary(lmfit) #显示分析结果的统计概要
plot(lmfit) #生成回归诊断图形
cook<-cooks.distance(lmfit) #计算和保存影响度量统计量
plot(cook) #绘图
predict(lmfit, mynewdata) #在新的车身重量数据上对每加仑行驶的英里数进行预测,使用predict(lmfit, mynewdata)
help(lm) #查看函数lm()的介绍及用法

(9)章末综合示例

help.start() #打开帮助文档首页,并查阅其中的“Introduction to R”
install.packages("vcd"#安装vcd包(一个用于可视化类别数据的包,你将在第11章中使用)
help(package ="vcd"#列出此包中可用的函数和数据集
library("vcd"#载入“vcd”包
help("Arthritis"#阅读数据集“Arthritis”的描述
Arthritis #显示数据集Arthritis的内容
example(Arthritis) #运行数据集Arthritis自带的示例
q() #退出


图1-2 数据集Arthritis自带图(展示关节炎治疗情况和治疗结果之间关系)

(10)个人实战

help.start()
install.packages("vcd")
help(package ="vcd")
library("vcd")
help("OvaryCancer"#阅读"vcd"包内数据集"OvaryCancer"的描述
OvaryCancer #显示数据集"OvaryCancer"的内容
example(OvaryCancer) #运行该数据集自带的示例
savehistory("shizhan")
loadhistory("shizhan")
save.image("shizhan")
rm(list = ls())
q()




编辑:邓敬舵

校审:梁晓杰





相关阅读: