R语言—90分钟从入门到精通

R语言—90分钟从入门到精通R 语言 90 分钟从入门到精通 1 初识 R1 1 安装 R2 常见的数据类型及其转换 2 1 几种常见的数据类型 2 2 检查数据类型 2 3 强制数据类型转换 2 4 特殊的数据类型 3 数据结构 3 1 常见的几种数

大家好,欢迎来到IT知识分享网。

1. 初识R

1.1 安装R

Step1. 打开官网 The R Project for Statistical Computing
Step2. 点击download R
R官网
Step3. 选择镜像China
Step4. 选择你所需的R版本,在此以Windows为例
在这里插入图片描述
Step5. 点击install R for the first time.
在这里插入图片描述
Step6. 进入下载界面,出现最新版本下载,也可以在该页面跳转到下载历史版本,这里我们下载最新的版本R-3.6.0
在这里插入图片描述
Step7.打开下载下来的应用程序,如下图:
在这里插入图片描述
Step8:双击后,按照提示操作,最终安装到默认目录下C:\Program Files\R\R-3.6.0,当然,你也可以放在其他目录。此时,在你的桌面会有带有R图标的软件,双击打开,进入R控制台。
在这里插入图片描述
如上,我们已经下载了R软件,可以通过任务栏h中文件=>新建程序脚本打开进入到编辑界面,在此我们可以编写R代码,如下:我们运行了一段代码,并输出结果3。













#在R中“=”表示赋值,“#”表示注释 a=1 #将1赋值给a b=2 #将2赋值给b c=a+b #将a加b的结果赋值给c c #打印出c的结果 

1.2 R编辑器-Rstudio安装

Step1. RStudio是R软件的编译器,它让用户交互体验更好,点击RStudio下载链接。
在这里插入图片描述
Step2. 下载后,运行RStudio-1.2.1335.exe
在这里插入图片描述
Step3. 安装后,打开编辑器。
在这里插入图片描述




Step4. 认识RStudio并新建R脚本
File->New File->R script 创建R scrip,输入以下代码,查看运行结果,可以看到console控制台输出运行结果。

getwd() #查看保存文件的路径 a=1 #将1赋值给a b=2 #将2赋值给b c=a+b #将a加b的结果赋值给c c #打印出c的结果 

在这里插入图片描述

1.3 更换镜像/安装包/帮助文档

1.3.1 更换镜像

# 使用代码改变镜像,将镜像赋值给r['CRAN'] local( { r <- getOption("repos") r["CRAN"] <- "https://mirrors.tuna.tsinghua.edu.cn/CRAN/" options(repos=r) }) 

或采用界面方式更改镜像

  1. 打开Tools->Global Options->Packages
  2. 在Package Management-Primary CRAN repository更改镜像文件,点击确认。
1.3.2 安装包
# 利用代码安装包
install.packages("ggplot2")
#调用包
require(ggplot2)
#或
library(ggplot2) 
#假设装包失败,可以试图换一个镜像,更换地址:https://cran.r-project.org/mirrors.html 

在这里插入图片描述

1.3.3 查看帮助文档
# help(package="packagename") # help(packagename) library(ggplot2) help(package="ggplot2") help(ggplot2) 

1.4 常见读取文件方式

1.5 R链接数据库

2. 常见的数据类型及其转换

2.1 几种常见的数据类型

数据类型-Ch 数据类型-En 样例
数值型 numeric 1,2,3
逻辑型 logical TRUE Or FALSE
字符型 character “little tree”
因子型 factor

举例说明:

#======class查看数据所属的类型=== class(data.frame(1,2,3)) [1] "data.frame" class(TRUE) #[1] "logical" class("beautiful code") #[1] "character" class(1) #[1] "numeric" class(as.factor(1)) #[1] "factor" #======mode查看对象存储模式== mode(data.frame(1,2,3,4)) #[1] "list" mode(TRUE) #[1] "logical" mode("beautiful code") #[1] "character" mode(as.factor(c(1,2,3))) #[1] "numeric" 

以上对比可知,class(data.frame(1,2,3,4))得到数据所属类型是数据框,mode(data.frame(1,2,3,4))则是list,说明数据框存储模式是以list存储的,所以数据框是特殊的数列。

2.2 检查数据类型

#=========is.*()====== is.integer(1.3) #[1] FALSE is.double(3) #[1] TRUE is.factor(89) #[1] FALSE is.numeric(2.3) #[1] TRUE is.logical(TRUE) #[1] TRUE is.logical("TRUE") #[1] FALSE is.complex(9i) #[1] TRUE 

2.3 强制数据类型转换

#===as.*()===== as.numeric("8") #[1] 8 as.logical(8) #[1] TRUE as.character(8) #[1] "8" as.factor("8") #[1] 8 #Levels: 8 

2.4 特殊的数据类型

NULL:空数据
NA:表示无数据
NaN:表示非数字
inf:数字除以0得到的值
以上分别用is.null()is.na()is.nan()is.infinite()查看是否是该种数据。



3. 数据结构

3.1常见的几种数据结构
数据结构-Ch 数据结构-En 样例 数据类型一致
数据框 Data.frame head(iris)
向量 vector c(1,2,3,4)
列表 list list(list(1,2,3,4),list(‘a’,‘b’))
数组 matrix matrix(1:12,ncol=3)

其中,data.frame这种数据类型在我们之后的例子中会反复出现。

3.2 函数

函数一般包括:函数名参数程序主体

#======函数一般表现形式:Func<-function(){...}==== #一、下面定义了函数可以实现平方计算,return返回输出值, myfun=function(x){y=x*x;return(y)} a<-myfun(4) a #>[1] 16 #二、若无输出值,默认为最后一行返回结果 myf=function(x){y=x*x; y} myf(2) #>[1] 4 #三、若最后一行无返回结果,那么函数将无返回结果 myf=function(x){y=x*x} myf(2) #> 
3.3 对象

R是一种基于对象(object)的语言,所以我们在R语言中看到的一切事物都是对象,向量是对象,函数是对象,图形是对象。

简单说,我们可以把一辆奥迪车看做是R对象(object),奥迪车里有很多零部件,如方向盘、油门、刹车、座椅,所有的这些事物都是对象。而这些方向盘、油门、刹车则各有不同的属性(如方向盘尺寸、大小、颜色等属性),类也是其中一种属性。

4. 句法结构

4.1 if 条件判断语句

if条件判断语句,用来执行满足给定条件的语句.

用if条件判断语句实现功能-以Pima- Indians- diabetes印度糖尿病数据集为例,为检验指定变量是否显著影响糖尿病发病问题。我们对该Pima- Indians- diabetes数据集中怀孕次数做了方差检验,但方差检验必须满足2个条件:

  1. 数据服从正态分布
  2. 方差的齐次性

Pima- Indians- diabetes数据集见引文文章末尾[附录1],或
链接: https://pan.baidu.com/s/1iNYZA3TWr8Qsn24uciedqA 提取码: nahe

 数据变量说明: # Number of times pregnant 怀孕次数 # Plasma glucose concentration a 2 hours in an oral glucose tolerance test 口服葡萄糖耐受试验中,2小时的血浆葡萄糖浓度。 # Diastolic blood pressure (mm Hg) 舒张压(mm Hg) # Triceps skin fold thickness (mm) 三头肌皮肤褶层厚度(mm) # 2-Hour serum insulin (mu U/ml) 2小时血清胰岛素含量(μU/ ml) # Body mass index (weight in kg/(height in m)^2) 体重指数(体重,kg /(身高,m)^ 2) # Diabetes pedigree function 糖尿病家族史 # Age (years) 年龄(岁) # Class variable (0 or 1) 类变量(0 或 1) 
分析各解释变量与因变量之间的关系 #将Pima-Indians-diabetes.txt放在某文件夹中,然后修改下面的路径获取数据 diabetes=read.table("E:\\2019\\分享\\LearningR\\Pima- Indians- diabetes.txt",header = FALSE,sep=',',stringsAsFactors = FALSE) colnames(diabetes)<-c("PregntCnt","Pla_glus","bloodPressure","Triceps","insulin","massIndex","function","Age","Class")#给数据列命名 head(diabetes) summary(diabetes)#查看数据整体情况 nrow(diabetes)#查看行数 diabetes$Class<-as.factor(diabetes$Class)#将分类变量因子化 #显著检验:1.正态检验通过-->齐次性检验-->通过,oneway.test-->不通过,用anova.lm # 2.正态检验不通过--->kruskal.test shapiro<-shapiro.test(diabetes[,1]) if(shapiro$p.value<0.05){ bartlett_result<-bartlett.test(diabetes[,1],diabetes$Class) if (bartlett_result$p.value<0.05){ oneway<-oneway.test(diabetes[,1]~diabetes$Class) #方差不齐次采用oneway.test检验 p<-oneway$p.value F<-oneway[1]$statistic }else{ anov<-anova(lm(diabetes[,1]~diabetes$Class))#方差齐次采用anova检验 p<-anov$`Pr(>F)` F<-anov$`F value` } }else {p<-kruskal.test(diabetes[,1]~diabetes$Class)} 运行结果 >p #[1] 7.e-05 > F # F #16.52915 

4.2 for循环

p<-c() F<-c() for(i in 1:(ncol(diabetes)-1)){ if(shapiro$p.value<0.05){ bartlett_result<-bartlett.test(diabetes[,i],diabetes$Class) if (bartlett_result$p.value<0.05){ oneway<-oneway.test(diabetes[,i]~diabetes$Class) #方差不齐次采用oneway.test检验 p[i]<-oneway$p.value F[i]<-oneway[1]$statistic }else{ anov<-anova(lm(diabetes[,i]~diabetes$Class))#方差齐次采用anova检验 p[i]<-anov$`Pr(>F)` F[i]<-anov$`F value` } }else {p[i]<-kruskal.test(diabetes[,i]~diabetes$Class)} } result<-data.frame(variable=colnames(diabetes[,1:8]),p,F) > result # variable p F # 1 PregntCnt 7.e-05 16. # 2 Pla_glus 8.e-15 68. # 3 bloodPressure 4.e-02 3. # 4 Triceps 2.007306e-01 1. # 5 insulin 4.e-03 8. # 6 massIndex 8.e-08 30. # 7 function 1.e-03 9. # 8 Age 9.086480e-07 25. 

作业1:将上述 for 循环改成函数,函数名为myTest

4.3 while循环

#-----while循环的一般形式:
while(cond1){

…}

# 1. 设定初始值 n=0 i=1 # 2. while循环体 while(i<100){ print(i) n=n+i i=i+1 } # 3. 实现从1加到99 print(n) 

4.4 Switch语句

R中的switch语句和其他的语句有很大区别

·C语言中switch语句语法:
switch(expr){

case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
R语言中switch语句语法:
switch(expr,list)
其中,expr为表达式,其值或者为字符串或者为数值;
list为一个列表










# (1) 当expr为数值时,表示list的位置,当数值超过list长度,返回空值 switch(2, "翔宇亭IT乐园", "百度百家号", "R语言学习") # [1] "百度百家号" switch(5, "翔宇亭IT乐园", "百度百家号", "R语言学习") # (2) 当expr为字符串,有点类似于键值对{key:words},expr相当于输入key,找对应的words switch('fruit', drink="water", meat = "beef", fruit = "apple", vegetable="cabbage") # [1] "apple" 

5. R与数据产品

工作中,老板往往不仅限让你去分析数据,得到结论。而更多的是让你从分析问题的角度出发,思考怎样将这种分析思路转换成更通用化、更便于理解和使用的产品。并且,将这些产品展示出来。于是,工业界就诞生了数据产品这一职能。

事实上,一位出色的数据科学家一定程度上也扮演者上述的角色。所以,接下来要介绍的就是R与数据产品。

6. 简单介绍R与机器学习

R有很多用于机器学习的包

  • 聚类算法中主成分分析、kmeans、DBSCAN、层次分析法;
  • 分类算法中KNN、SVM、决策树、随机森林、XGBOOST等;
  • 深度学习中MXNetR、darch、deepnet、H2O、deepr包等;
  • 自然语言处理中Rwordseg是最常见的分词包;
    此外,R还可以用于爬虫等其他技术领域。

这里我们重点讲聚类算法中的kmeans以及分类算法中C5.0

7. 获得更多R资源

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/112060.html

(0)
上一篇 2026-01-20 22:15
下一篇 2026-01-20 22:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信