断断续续学习R语言已经很久,一直想要记录下自己学习时的所想所得,但是始终没有行动,这次终于决定记录下学习R语言编程艺术时的所思所悟,原因是第二次读这本书,终于意识到书中的精髓,想要和大家分享,如果有理解不对的地方,也欢迎大家批评指正。
第一章 快速入门
刚开始认识R语言,最重要是了解R语言中数据结构(当然,安装和启动我略掉了,大家记得安好Rstudio)。
1.向量
向量包括字符型向量和数值型向量,注意向量里面元素只能由一种组成,不能混合
例如:x<-c(1,2,3)数值型;x<-c("a","b","c")字符型
索引主要用于寻找某个具体的元素,R语言中用x[1]指向x中的第一个元素,以此类推。
2.字符串
y<-"abc"
> y
[1] "abc"
> mode(y)
[1] "character"
使用mode()函数可以判断变量具体类型
3.矩阵
这里的矩阵就是指高代中的矩阵,其实矩阵也是向量,和向量不同的是,矩阵的索引是x[a,b],a代表某行,b代表某列,使用matrix()函数创建矩阵,注意矩阵按列排序。
> x<-matrix(c(1:4),nrow=2,ncol=2)
> x
[,1] [,2]
[1,] 1 3
[2,] 2 4
> x[1,2]
[1] 3
4.列表
列表生成用list(),列表和向量不同之处,列表中元素既支持数值型,也支持字符型,可以通过$符号来访问列表中具体的组件;
> x<-list(u=2,v="a")
> x
$u
[1] 2
$v
[1] "a"
这里因为定义了列表中两个组件,所以可以用$来分别访问。
5.数据框
data.frame()用于生成数据框,数据框本质是列表,其中元素既支持数值型,也支持字符型
> x<-data.frame(list(kids=c("Jack","Tom"),ages=c(12,10)))
> x
kids ages
1 Jack 12
2 Tom 10
> x$kids
[1] Jack Tom
Levels: Jack Tom
> x$ages
[1] 12 10
实例包含创建数据框以及访问列表中元素的方法。
6.每章案例
每章案例,偏数学类,比较经典综合,本章是考试成绩的回归分析
examsquiz<-read.table("ExamsQuiz.txt",header=FALSE) #我没找到源数据,通过在工作目录中新增TXT文档读入#
> class(examsquiz) #查看数据类型#
[1] "data.frame"
> head(examsquiz) #读取数据#
V1 V2 V3
1 2.0 3.0 4.0
2 3.3 2.0 3.7
3 4.0 4.3 4.0
4 2.3 0.0 3.3
5 2.3 1.0 3.3
6 3.3 3.7 4.0
> lma<-lm(examsquiz[,2]~examsquiz[,1]) #建立一个线性回归模型函数是lm(),取examsquiz中第二列和第一列拟合线性模型,其中第二列代表因变量,第一列代表自变量#
> summary(lma) #对模型拟合结果进行概括性分析#
Call:
lm(formula = examsquiz[, 2] ~ examsquiz[, 1])
Residuals:
1 2 3 4 5 6
1.8522 -0.9261 0.4164 -1.5582 -0.5582 0.7739
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -1.5880 2.3608 -0.673 0.538
examsquiz[, 1] 1.3679 0.7992 1.712 0.162
Residual standard error: 1.396 on 4 degrees of freedom
Multiple R-squared: 0.4228, Adjusted R-squared: 0.2785 #R的平方值只有0.42,低相关性,模型拟合效果差#
F-statistic: 2.93 on 1 and 4 DF, p-value: 0.1621
> lmb<-lm(examsquiz[, 2] ~ examsquiz[, 1]+examsquiz[,3]) #重新拟合,分析第2列与第1列和第3列间的线性相关性#
> summary(lmb)
Call:
lm(formula = examsquiz[, 2] ~ examsquiz[, 1] + examsquiz[, 3])
Residuals:
1 2 3 4 5 6
-0.01558 -0.48725 0.26938 -0.39559 0.60441 0.02464
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -13.8409 2.6026 -5.318 0.0130 *
examsquiz[, 1] 0.5075 0.3470 1.463 0.2397
examsquiz[, 3] 3.9604 0.7904 5.010 0.0153 *
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5268 on 3 degrees of freedom
Multiple R-squared: 0.9384, Adjusted R-squared: 0.8973
#R的平方值为0.94,高度拟合,模型拟合效果好,证明第二列值受2 个自变量影响#
F-statistic: 22.84 on 2 and 3 DF, p-value: 0.01529
7.获取帮助的办法
1.直接使用help()函数,如:help(seq),help("plot")
2.使用?
8.获取案例的办法
获取案例可以帮助直接快速学习,很方便,
如:example("plot")
plot(cars) #比如可以直接使用在某个数据集上,画图#
plot(table(rpois(100, 5)), type = "h", col = "red", lwd = 10,main = "rpois(100, lambda = 5)")
#复杂点可以编辑连接点类型,线条颜色,图形宽度,主标题等等#
结束语
第一章是快速入门,所有内容都是点到即止,书中后续章节会深入讲解,我也会持续更新~~敬请期待~