断断续续学习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)")
#复杂点可以编辑连接点类型,线条颜色,图形宽度,主标题等等#结束语
第一章是快速入门,所有内容都是点到即止,书中后续章节会深入讲解,我也会持续更新~~敬请期待~