《R语言程序设计》 课件 第0-2章 R语言程序设计教学概要、R语言概述、数据对象_第1页
《R语言程序设计》 课件 第0-2章 R语言程序设计教学概要、R语言概述、数据对象_第2页
《R语言程序设计》 课件 第0-2章 R语言程序设计教学概要、R语言概述、数据对象_第3页
《R语言程序设计》 课件 第0-2章 R语言程序设计教学概要、R语言概述、数据对象_第4页
《R语言程序设计》 课件 第0-2章 R语言程序设计教学概要、R语言概述、数据对象_第5页
已阅读5页,还剩131页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

R语言程序设计

课程概要R语言是一门用于统计分析、数据挖掘和数据可视化的语言,在大数据时代其应用领域非常广泛。本课程从数据挖掘角度讲解R语言,涉及R语言特性、数据对象和管理、数据可视化、基本统计分析概念与应用、数据挖掘和机器学习。面向全校本科生选修课,基础能力/信息能力模块先修课“大学计算机基础”1课程目标课程目标1:专业知识方面。掌握R语言与数据挖掘的基础知识,学会R语言的常用功能,理解与掌握使用R语言进行数据挖掘的基本原理。课程目标2:专业能力方面。掌握R语言数据挖掘中的建模与应用,了解和熟悉常用数据挖掘算法例如分类与预测、聚类分析、关联规则、智能推荐、时序模式、神经网络的基本原理和应用。课程目标3:综合能力方面。在具体案例中掌握实施R语言数据挖掘的流程,初步具备综合运用R语言进行数据挖掘的基本能力。课程目标4:思想政治素质方面。强化学生在大数据挖掘实践中的道德品质与伦理素养,要求学生在其中培养爱国敬业、诚实守信等基本素质。2教学内容与时间3模块周数内容课堂学时实验学时一

基础1R语言概述2(2)2数据对象223数据管理224数据可视化225模块一复习2(2)二进阶6数据探索227数据分析228数学建模-12(2)9数学建模-22210数学建模-32(2)11模块二复习2(2)三

拓展12R语言高级特性2(2)13应用拓展-12214应用拓展-22215课程复习2(2)16

考试共计3018+(12)()为课外学时基础知识4序号主题内容掌握1R语言概述R起源、下载使用、R程序特点、包、数据集***2数据对象数据类型,向量(等差数列),矩阵,数组,数据框,列表,因子***3数据管理控制结构,编写函数,函数族,数据输入输出***4数据可视化绘图基础plot(),绘图进阶ggplot()***基础知识5序号主题内容掌握5数据探索数据描述、清洗、集成、规范、重构**6数据分析随机数模拟、假设检验、方差分析、线性回归、广义线性模型**7数据挖掘数据挖掘、决策树、分类、聚类、Rattle**8高级特性面向对象、性能提升*9应用拓展模型拓展(关联规则、时间序列分析)、工具*配套教材6模块编号目录基础篇1R语言概述2数据对象3数据管理4数据可视化进阶篇5数据探索6数据分析7数据挖掘拓展篇8高级特性9应用拓展配套资源7学堂在线:R语言程序设计(北京交通大学周围)参考教材及资料8大数据技术丛书R语言与数据挖掘作者:张良均等出版社:机械工业出版出版年:2019-11-1R语言编程艺术作者:(美)NormanMatloff出版社:机械工业出版社译者:陈堰等出版年:2013-5常用链接:R语言:入门教程:/rIDE工具:R包下载:论坛:/t/r论坛:R共享:评定与考核(参考)9小组研究型实验:每组5人,完成相应项目。线上单元测:

共9个单元测试或作业,在线完成,自动出成绩。模块一和模块二:

共2次线上/线下测试或作业,限时完成,有成绩。期末考试:线下笔试,限时,监考,闭卷。签到考勤:按照学校请假制度。小组研究型实验要求每小组5人,共同完成各自研究型实验(大作业)。小组名单第1位和第5位同学为正副组长,进行任务分工、讨论、校对、整合、优化等工作。实验大作业要求:具有一定挑战性和难度的研究题目。在期末考试前提交,按照论文模板要求撰写研究实验报告。10R语言学习的特点R语言是一门程序设计语言,主要通过命令行方式完成。和数据分析、数据挖掘的模型联系紧密,虽然几行语句就可以完成,但每一个知识点都需要深入研究。实用性很强,今后的科研活动能用得上。11如何学好R语言作为一门语言,多敲代码、多实验是必经之路。作为一门数据分析挖掘的工具,尽可能理解算法模型背后的原理。面对日新月异的大数据应用,关注几个权威论坛,学习常态化。12R语言程序设计

R语言概述了解R语言R起源、下载使用、R程序特点、包、数据集第一个R语言会话开发环境配置程序编写运行综合实验目录15了解R语言应用于统计分析、数据挖掘等领域开源免费,编程方便为什么选择R语言编程语言排行榜18常用分析工具Excel:办公室应用软件SPSS:专业统计分析软件MATLAB:商用数学软件R:统计分析数据挖掘收费收费收费免费SAS:统计分析商用软件收费免费Python:胶水语言S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析、作图的解释型语言。1995年,Auckland大学的RobertGentleman和RossIhaka及其他志愿人员开发了R系统。R是基于S语言的GNU计划项目。现在R语言由20余人的核心团队负责开发。R的第三方包、工具、论坛很多,不断更新中。什么是R?开源免费,第三方包发布的CRAN平台跨平台(开源,支持多种OS)可拓展性强(与其他语言相互调用)编程简单,解释性、交互性语言数据分析功能强大,专为统计和数据挖掘开发庞大且活跃的社区维护专业数据分析领域的标准工具R语言的优点R相关网址:/t/rR是一种解释性语言,和编译性语言相比,速度略慢。R所有计算都是在内存中进行的。R语言包的编写者来自不同领域,在一定程度上较混乱,有些更新慢。R语言的缺点R可以在CRAN(ComprehensiveRArchiveNetwork)免费下载。Linux、MacOSX和Windows都有相应编译好的二进制版本。可以通过安装包(package)来增强R的功能。R语言的获取和安装/mirrors.htmlR的GUIR的图形用户界面RStudio是专门用于R语言环境的集成开发环境(IDE),本课程推荐使用。使用RStudio开发程序R语言有众多的绘图工具包,如ggplot2。R语言有强大的数据挖掘和可视化工具,如rattle。数据可视化工具R是一种区分大小写的解释性语言。可以在命令提示符(>)后,输入并执行一条命令,或者一次性执行写在脚本文件中的一组命令。R中有多种数据类型,包括向量、矩阵、数据框以及列表。R中的很多功能是由程序内置函数和用户自编函数提供的,一次交互会话期间的所有数据对象都被保存在内存中。一些基本函数是默认直接使用,而有些函数则需加载程序包。R语言的编程特点在Rstudio中练习:R的使用R的内置帮助系统提供了当前已安装包中所有函数的细节、参考文献以及使用示例。R的帮助函数:内置帮助系统函数功能help.start()打开帮助文档help("plot")或者

?plot查看函数plot的帮助(引号可以省略)help.search("plot")或者??plot以plot为关键词搜索本地帮助文档example(“plot”)函数plot的使用示例(引号可以省略)RSiteSearch("plot")以plot为关键词搜索在线文档个邮件列表存档apropos("plot",mode="function")列出名称中含有plot的所有可用函数data()列出当前已加载包中所含的所有可用示例数据集vignette()列出当前已经安装包中所有可能的vignette文档vignette(“plot”)为主题plot显示指定的vignette文档工作空间(workspace),储存着所有用户定义的对象。R会话结束时,可以保存工作空间,下次启动R时自动载入。工作目录(workingdirectory)

getwd():查看当前工作目录setwd():设定当前的工作目录。如果读入不在当前工作目录的文件,需要写明完整的路径。RStudio工作空间工作空间的命令包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。R自带了一系列默认包,提供了种类繁多的默认函数和数据集。计算机上存储包的目录称为库(library)。libPaths():显示库所在的位置。library():显示库中有哪些包。什么是包第一次安装包:install.packages("package_name","dir")

也可在RStudio中的菜单栏里从CRAN下载。一个包仅需要安装一次。使用update.packages()可以更新已经安装的包。使用installed.packages()查看已安装包的信息。包的安装加载包:library(),require()查看包的帮助:library(help=“包名")查看当前环境哪些包加载:find.package()移除包:detach(package:包名)包的数据加载到内存中:attach(“数据集名”)列出所有安装的包library()包的使用base程序包,R语言的基础包,包含常用的数学计算。stats程序包,统计包,包含用于统计计算和生成随机数的功能。datasets程序包,R语言的基础包,可以直接调用数据集,如iris。查看本机上所有R包的数据集data(package=.packages(all.available=TRUE))常用包R数据挖掘相关包功能函数及加载包分类与预测

nnet()需要加载BP神经网络nnet包;randomForest()需要加载随机森林randomForest

;

svm()需要加载e1071包;tree()需要加载CRAT决策树tree包等;聚类分析

hclust()函数、kmeans()函数在stats包中关联规则

apriori()需要加载arules包时间序列

arima()需要加载forecast、tseries包数据集描述airquality纽约1973年5-9月每日空气质量评估attenu多个观测站观测到的加利福尼亚23次地震数据beaver1

(beavers)一只海狸每10分钟的体温数据,共114条数据beaver2

(beavers)另一只海狸每10分钟的体温数据,共100条数据cars1920年代,汽车的速度与刹车距离chickwts不同饮食种类对小鸡重量的影响esoph喝酒,吸烟对食管癌的影响faithful一个间歇泉的爆发时间和持续时间InsectSprays不同杀虫剂对昆虫数目的影响irisEdgarAnderson记录的3种鸢尾花形态数据LifeCycleSavings50个国家的存款率mtcars32辆汽车的11个指标数据PlantGrowth三种处理方式对植物产量的影响内置数据集常用的数据集内置数据集数据集描述pressure温度和气压puromycin两种细胞中因子浓度对酶促反应的影响quakes1000次地震观测数据(震级>4)sleep两种药物的催眠效果stackloss化工厂将氨转为硝酸的数据swiss瑞士生育率和社会经济指标ToothGrowthVC剂量和摄入方式对豚鼠牙齿的影响trees树木形态指标USArrests美国50个州的四个犯罪率指标USJudgeRating43名律师的12个评价指标warpbreaks织布机异常数据women15名美国女性的身高和体重情况常用数据集(接上页)了解R语言R起源、R优缺点下载使用R和RStudioR语言编程特点包、数据集小结39第一个R语言会话开发环境配置程序编写运行第一个R语言会话安装1:R软件实验用R版本:R4.1.2forWindows或更高安装2:集成开发环境RStudio/products/rstudio/免费的图形界面编辑器,更友好的界面及更强的操作性。实验用RStudio版本:RStudioDesktop2021.09.1+372或更高软件下载与安装参考第一章综合实验指导R软件的控制台窗口安装1:R软件RStudio是专门用于R语言环境的IDE,本课程推荐使用。安装2:集成开发环境RStudio工作空间(Workspace)是RStudio当前的工作环境,存储了用户定义的所有对象(向量、矩阵、列表、数据框、函数)。工作空间管理在RStudio中写程序1.书写规范 2.命令提示符 3.脚本文件 4.运算符 5.元素命名 6.函数 7.注释 8.获取帮助 程序编写运行R是一种区分大小写的解释性语言。可以在命令提示符(>)后,输入并执行一条命令,或者一次性执行写在脚本文件中的一组命令。R中有多种数据类型,包括向量、矩阵、数据框以及列表。R中的很多功能是由程序内置函数和用户自编函数提供的,一次交互会话期间的所有数据对象都被保存在内存中。一些基本函数是默认直接使用,而有些函数则需加载程序包。编写“Hello,World!”程序1.书写规范大小写敏感基本命令:表达式(expressions),赋值(assignments)命令分割:可以用“;”隔开,或者另起一行程序块:通过大括弧({和})放在一起构成一个复合表达式注释:一行中,从“#”开始到句子收尾之间的语句是注释不需要命名基本数据类型和对象编写“Hello,World!”程序2.命令提示符启动R语言解释器,会得到提示“>”,其后输入程序。>myString<-"Hello,World!">print(myString)[1]"Hello,World!"编写“Hello,World!”程序3.脚本文件脚本语言(scriptinglanguage):是依靠解释器完成相应功能的一类计算机语言,通常以ASCII码的文本格式保存源程序。脚本语言是解释型语言,和编译型语言相比,速度较慢。#MyfirstprograminR

ProgrammingmyString<-"Hello,World!"print(myString)test.R脚本语言(RScript)

脚本文件>source("test.R")[1]"Hello,World!"执行脚本文件C:\Rscripttest.R[1]"Hello,World!"编写“Hello,World!”程序3.脚本文件在RStudio中执行脚本文件使用RScript执行脚本文件注意:文件的位置编写“Hello,World!”程序4.运算符

赋值符号:<-或->或=运算符号:+(加)、-(减)、*(乘)、/(除)、^(乘方)、%/%整除、%%求余逻辑判断符号:>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、!=(不等)、==(相等)逻辑运算符号:&(逻辑与)、|(逻辑或)、!(逻辑非)编写“Hello,World!”程序5.元素命名区分大小写,注意China和china的不同。数字、字母、“.”和“_”都是允许的,但必须以.或者字母开头;如果以.开头,第二个字符不允许是数字;不能用数字开头,数字可以放在中间或结尾,例如result2。建议不要用过短的名称,可以用”.”作为间隔,例如:anova.out1。不要使用保留名,例如:NA,NaN,pi,LETTERS,等。编写“Hello,World!”程序6.函数R语言的功能依靠函数来实现。函数形式:函数(输入数据,参数=)如果参数值没有指定,以默认值为准。函数包括自定义函数,泛型函数……#MyfirstprograminRProgrammingmyString<-"Hello,World!"print(myString)编写“Hello,World!”程序7.注释注释能帮助读懂程序,在实际执行程序时注释部分会被解释器忽略。单行注释:使用#,其后内容为注释部分。或者使用“”或’’来显示要注释部分。#MyfirstprograminRProgrammingmyString<-"Hello,World!"print(myString)if(FALSE){"Thisisademo."}myString<-"Hello,World!"print(myString)8.获取帮助R的内置帮助系统提供了当前已安装包中所有函数的细节、参考文献以及使用示例。编写“Hello,World!”程序函数功能help.start()打开帮助文档help("plot")或者

?plot查看函数plot的帮助(引号可以省略)help.search("plot")或者??plot以plot为关键词搜索本地帮助文档example(“plot”)函数plot的使用示例(引号可以省略)RSiteSearch("plot")以plot为关键词搜索在线文档个邮件列表存档apropos("plot",mode="function")列出名称中含有plot的所有可用函数data()列出当前已加载包中所含的所有可用示例数据集vignette()列出当前已经安装包中所有可能的vignette文档vignette(“plot”)为主题plot显示指定的vignette文档第一个R语言会话开发环境配置软件下载与安装工作空间管理程序编写运行小结571.书写规范2.命令提示符3.脚本文件4.运算符 5.元素命名 6.函数 7.注释8.获取帮助#MyfirstprograminRProgrammingmyString<-"Hello,World!"print(myString)test.R了解R语言R起源、下载使用、R程序特点、包、数据集第一个R语言会话开发环境配置程序编写运行本章小结58综合实验掌握R软件的下载和安装过程。掌握RStudio软件的下载和安装过程。掌握R语言编程基本规范。掌握R语言的工作空间管理和使用。掌握包的下载安装函数。了解rmarkdown的使用方法。能够通过help方法自学函数及其中参数的用法。实验目标第1章讲义中的案例第1章综合实验第1章使用的函数第1章思考与练习实验内容及资料目标:掌握R软件的下载和安装过程1.R软件官网2.R软件下载本书使用的R版本为R4.1.2forWindows选择镜像地址3.R软件安装安装路径不能包含中文实验1:R软件安装目标:掌握RStudio软件的下载和安装过程RStudio软件官网免费版2.RStudio软件下载本书使用的版本为RStudioDesktop2021.09.13.RStudio软件安装安装路径不能出现中文,和R安装路径在同一个目录下4.RStudio软件使用5.RStudio的菜单和快捷方式实验2:RStudio安装目标:掌握R语言编程基本规范书写规范:包含数字、字母、“.”和“_”命令提示符运算符函数文件脚本注释:使用#获取帮助:help(),?,help.start(),data()实验3:

编写“HelloWorld!”程序目标:掌握R语言的工作空间管理和使用工作空间的设置工作路径的读取新工作路径的设置工作空间的保存实验4:工作空间的管理和使用常用函数:getwd(),setwd()ls(),rm(),help(),options()history(),save.image(),save()load(),q()目标:掌握包的下载安装函数;了解rmarkdown的使用方法。配置安装Rmarkdown的环境Rmarkdown包的使用实验5:Rmarkdown包的安装和使用(拓展)常用函数:library(),require()library(help="package_name")find.package(),detach(),attach()思考与讨论数据对象目录数据类型数值型(numeric)、字符型(character)、复数型(complex)、逻辑型(logical)、特殊值等数据结构向量(vector)、数组(array)、矩阵(matrix)、数据框(dataframe)、列表(list)、因子(factor)等综合实验大小写敏感。命名:数字、字母、“.”和“_”都是允许的。不过,一个命名必须以.或者字母开头。如果以.开头,第二个字符不允许是数字。基本命令:表达式(expressions),赋值(assignments)。命令分割:可以用“;”

隔开,或者另起一行。程序块:基本命令可以通过大括弧({和})放在一起构成一个复合表达式。注释:一行中,从“#”

开始到句子收尾之间的语句是注释。基本数据类型:数值型(numeric)、字符型(character)、复数型(complex)和逻辑型(logical)。基本数据结构:向量(vector)、数组(array)、矩阵(matrix)、数据框(dataframe)、列表(list)、因子(factor)等。R语言特点(复习)数据类型x

8a

'city'变量的赋值基本赋值语句answer

value变量名/赋值对象值赋值符号R语言常见的数据类型:字符型、数值型、逻辑型、复数型此外还有一些特殊值:NA:表示缺失值(Missingvalue),是“NotAvailable”的缩写Inf:表示无穷大,是“Infinite”的缩写NaN:表示非数值,是“NotaNumber”的缩写NULL:表示空值,即没有内容数据类型数据类型辨别函数转换函数characteris.character()as.character()complexis.complex()as.complex()integeris.integer()as.integer()logicalis.logical()as.logical()numericis.numeric()as.numeric()NAis.na()as.na()在R中,字符型的日期值无法进行日期变量的计算,可通过日期值处理函数,将字符型的日期值转换成日期变量。日期类型函数功能Sys.Date()返回系统当前的日期Sys.time()返回系统当前的日期和时间date()返回系统当前的日期和时间(返回的值为字符串)as.Date()将字符串形式的日期值转换为日期变量as.POSIXlt将字符串转化为包含时间及时区的日期变量strptime()将字符型变量转化为包含时间的日期变量strftime()将日期变量转换成指定格式的字符型变量format()将日期变量转换成指定格式的字符串as.Date():将字符串形式的日期值转换为日期变量。使用格式:as.Date(x,format="",...)其中x是要转换的对象,为字符型数据,format则给出了用于读入日期的适当格式。日期类型符号含义示例符号含义示例%d数字表示的日期01~31%Y四位数的年份2023%a缩写的星期名Mon%H24小时制小时00-23%A非缩写的星期名Monday%I12小时制小时01-12%w数字表示0-6%pAM/PM指示AM/PM%m数字表示的月份00~12%M十进制的分钟00-60%b缩写的月份Jan%S十进制的秒00-60%B非缩写的月份January%y二位数的年份16其他日期类型as.POSIXlt()strptime()strftime()format()

日期类型#时间变量的转换#创建一个字符型日期时间变量>x<-c("2023-02-0810:07:52","2023-08-0719:33:02")#判定是否为字符型变量>is.character(x)[1]TRUE#对字符串形式的日期时间值按照格式进行转换>as.POSIXlt(x,tz="","%Y-%m-%d%H:%M:%S")[1]"2023-02-0810:07:52CST""2023-08-0719:33:02CST">(x<-strptime(x,"%Y-%m-%d%H:%M:%S"))[1]"2023-02-0810:07:52CST""2023-08-0719:33:02CST">strftime(x,format="%Y/%m/%d")[1]"2023/02/08""2023/08/07“#输出的格式转换成format定义的格式>format(x,"%d/%m/%Y")[1]"08/02/2023""07/08/2023"查看对象的类型使用格式:class(x)、mode(x)、typeof(x)。其中x为需要查看类型的对象。mode()函数查看数据的大类,class()函数查看数据的类,typeof()函数则更加细化,查看数据的细类。对于未知类型的对象,在R中有3个函数可以查看对象的类型:>df<-data.frame(c1=letters[1:3],c2=1:3,c3=c(1,-1,3.0),stringsAsFactors=F)>sapply(df,mode)c1c2c3"character""numeric""numeric">sapply(df,class)c1c2c3"character""integer""numeric">sapply(df,typeof)c1c2c3"character""integer""double"数据结构数据结构R有许多用于存储数据的结构,包括向量、矩阵、数组、数据框、列表和因子。向量向量的创建、等差序列、重复序列、向量索引、NA和NULL值、编辑、排序矩阵和数组矩阵的创建、合并、拉直、索引、行和列的计算、行列命名、数组创建、维度数据框和列表数据框的创建、索引、列表的创建、索引因子因子的创建、level(水平)、因子序列、因子的存储数据结构数据结构:向量向量以一维数组的方法管理数据,是R语言中最基本的数据结构。向量可以是数值型、字符型、逻辑值型(T、F)和复数型。实例:创建不同类型的向量“:”运算符,生成指定范围内数值构成的向量。一个向量的所有元素都必须属于相同的类型。如果不是,R将强制执行类型转换。>x1<-c(1,2,3,4)#创建数值型向量,可写成x1=c(1:4)>x2<-c("a","b","c","d")#创建字符型变量>x3<-c(TRUE,FALSE,FALSE,TRUE)#创建逻辑型变量向量c()函数创建向量length()测向量长度>w<-c(1,3,4,5,6,7)>length(w)[1]6>mode(w)[1]“numeric”>w2<-c(T,F,T)>length(w2)[1]3>mode(w2)[1]"logical">w1<-c('张三','李四','王五')>length(w1)[1]3>mode(w1)[1]"character"向量一个向量的所有元素都必须属于相同的类型。如果不是,R将强制执行类型转换。>w4<-c(w,w1)>w4[1]"1""3""4""5""6""7""张三""李四""王五">mode(w4)[1]"character">w5<-c(w1,w2)>w5[1]"张三""李四""王五""TRUE""FALSE""TRUE">mode(w5)[1]"character">(w<-seq(1:10))

[1]12345678910>(x<-sqrt(w))[1]1.0000001.4142141.7320512.0000002.2360682.4494902.6457512.8284273.0000003.162278向量的运算R语言最强大的方面之一就是函数的向量化。向量的算术运算如果两个向量的长度不同?>(w1<-c(2,3,2,3))[1]2323>(w2<-c(3,1,4,2,5,3))[1]314253>(w<-w1+w2)[1]546576Warningmessage:Inw1+w2:longerobjectlengthisnotamultipleofshorterobjectlengthseq(from=1,to=1,by=((to-from)/(length.out-1)),length.out=NULL,along.with=NULL,...)等差序列的创建seq()产生等距间隔的数列,其基本形式为:参数描述from等差数列的首项数据,默认为1to等差数列的尾项数据,默认为1by等差的数值length.out产生向量的长度>(seq(1,-9))[1]10-1-2-3-4-5-6-7-8-9>(seq(1,-9,length=5))[1]1.0-1.5-4.0-6.5-9.0>(seq(1,-9,by=-2))[1]1-1-3-5-7-9>(seq(1,10,2))[1]13579重复序列的创建rep()是重复函数,其基本形式:rep(x,n)其中x是预重复的序列,n是重复的次数。>(rep(1:4,2))[1]12341234>(rep(1:4,each=2))[1]11223344>(rep(1:4,c(2,2,2,2)))[1]11223344>(rep(1:4,c(2,1,2,1)))[1]112334>(rep(1:4,each=2,len=4))[1]1122>(rep(1:4,each=2,times=3))[1]112233441122334411223344练习创建一个向量x,内含等差数列:首位为1.7,等差为0.1,长度为5创建向量y,y为重复序列:元素为“red”、“orange”、“green”,各元素重复两次,序列长度为5向量索引索引,用方括号[]来实现,也称之为子集、下标或切片。索引是R中最重要和最常用的运算符。索引用来选择向量中部分或个别元素来构成子向量。向量1[向量2]:向量1中索引为向量2的那些元素。atcbfgh1234567vector:index:向量索引

R语言中,提供如下多种索引方法。给向量传入正数,它会返回此位置上的向量元素切片。它的第一个位置是1(而不像其他某些语言一样是0)。给向量传入负数,它会返回一个向量切片,它将包含除了这些位置以外的所有元素。给向量传入一个逻辑向量,它会返回一个向量切片,里面只包含索引为TRUE的元素。对于已命名的向量,给向量传入命名的字符向量,将会返回向量中包含这些名字的元素切片。向量索引x[n] 第n个元素x[-n] 除了第n个元素的xx[1:n] 前n个元素x[-(1:n)] 第n+1至最后的元素x[c(1,4,2)] 指定元素x["name"] 名为"name"的元素x[x>3] 所有大于3的元素x[x>3&x<5] 区间(3,5)的元素x[x%in%c("a","and","the")]给定组中的元素例向量索引>x<-c(2,4,6,8,1)>x[c(1,3,5)][1]261>x[c(-2,-4)][1]261>x[c(TRUE,FALSE,TRUE,FALSE,TRUE)][1]261>names(x)<-c('one','two','three','four','five')>x[c('one','three','four')]onethreefour268>x[c(1,-1)]Errorinx[c(1,-1)]:only0'smaybemixedwithnegativesubscripts如果给每个元素命名,该方法也将返回相同的值:三个索引方法都将返回相同的值:混合使用正负值是不允许的,会抛出一个错误:NA和NULL值NA:缺失值,NULL:不存在的值。subset()函数,在向量中筛选符合条件的值,它可以自动过滤NA值。>x<-c(2,4,6,8,1,NA)>subset(x,x>5)[1]6,8>x[x>5][1]6,8,NA>x<-c(2,4,6,NA)>mean(x)[1]NA>mean(x,na.rm=T)[1]4>x<-c(2,4,6,NULL)>mean(x)4向量索引which()函数将返回逻辑向量中为TRUE的位置。which.min和which.max分别是which(min(x))和which(max(x))的简写:>x<-c(2,4,6,8,1)>which(x>3)[1]234>which.min(x)[1]5>which.max(x)[1]4向量编辑R语言可以对已经创建好的向量直接进行元素扩展及删除等编辑操作。向量中元素的删除通过减号加元素下标的形式实现。例:向量元素的扩展及删除#向量编辑>x<-c(1,2,3,4)#向量扩展>(x<-c(x,c(5,6,7)))[1]1234567#单个元素的删除>(x<-x[-1])[1]234567#多个元素的删除>(x<-x[c(3:5)])[1]456使用sort()等函数进行排序。向量排序sort()函数常用参数常用参数参数描述选项x

排序的对象排序的对象为数值型,也可以是字符型。decreasing

排序的顺序默认设置为FALSE,即升序排序。设置为TRUE时,为降序排序。na.last

是否将缺失值放到序列的最末尾。默认设置为FALSE,设置为TRUE时将向量中的NA值放到序列的最末尾。向量vector用于描述一维数据,是R语言中最基础的数据结构形式。矩阵matrix描述二维数据,和向量相似,其内部元素可以是实数、复数、字符、逻辑型数据。矩阵matrix使用两个下标来访问元素,A[i,j]表示矩阵A第i行、第j列的元素。多维数组array描述多维数据。array有一个特征属性叫维数向量(dim属性),它的长度是多维数组的维数,dim内的元素则是对应维度的长度。矩阵是数组的特殊情况,它具有两个维度。数据结构:矩阵和数组matrix()函数,以向量形式输入矩阵中的全部元素,使用ncol和nrow设置矩阵的行和列数。注意向量1~10是按列填充的,如果想要以行为单位填充,则可以将参数byrow设置为TRUE。矩阵创建>(w<-seq(1:10))[1]12345678910>(a<-matrix(w,nrow=5,ncol=2))[,1][,2][1,]16[2,]27[3,]38[4,]49[5,]510>(a<-matrix(w,nrow=5,ncol=2,byrow=T))[,1][,2][1,]12[2,]34[3,]56[4,]78[5,]910在创建矩阵时,也可以使用dimnames参数设置行和列的名称。矩阵创建>(a<-matrix(w,nrow=5,ncol=2,byrow=T,dimnames=list(paste0('r',1:5),paste0('l',1:2))))l1l2r112r234r356r478r5910函数cbind()把其横向拼成一个大矩阵,rbind()把其纵向拼成一个大矩阵。合并cbind()时高度(行数)应该相等。rbind()合并时宽度相等。如果参与合并的变量不一致,则循环不足后合并。矩阵合并>(x1<-cbind(c(1,2),c(3,4)))[,1][,2][1,]13[2,]24>(x1<-rbind(c(1,2),c(3,4)))[,1][,2][1,]12[2,]34>cbind(x1,1)[,1][,2][,3][1,]121[2,]341矩阵的拉直设A是一个矩阵,则函数as.vector(A)可以将矩阵转化为向量。如:>(A<-matrix(1:6,2,3))[,1][,2][,3][1,]135[2,]246>as.vector(A)[1]123456矩阵的行或列计算colSums()对矩阵各列求和colMeans()求矩阵各列的均值rowSums()对矩阵各行求和rowMeans()求矩阵各列的均值>(A<-matrix(1:16,4,4))[,1][,2][,3][,4][1,]15913[2,]261014[3,]371115[4,]481216>colSums(A)[1]10264258>colMeans(A)[1]2.56.510.514.5>rowSums(A)[1]28323640>rowMeans(A)[1]78910R语言中有丰富的矩阵运算的函数,包括四则运算、对矩阵各行列的求和、对矩阵各行列的求均值、转置等。矩阵的运算函数功能+-*/四则运算,要求矩阵的维数相同,对对应位置的各元素进行运算colSums()对矩阵的各列求和rowSums()对矩阵的各行求和colMeans()对矩阵的各列求均值rowMeans()对矩阵的各行求均值t()对矩阵的行列进行转置det()求解方阵的行列式outer()求解矩阵的外积(叉积)%*%矩阵乘法,要求第一个矩阵的列数与第二个矩阵的行数相同diag()对矩阵取对角元素,若对象为向量,则生成以向量为对角元素的对角矩阵solve()对矩阵求解逆矩阵,要求矩阵可逆x[i,j] 下标为(i,j)的元素x[i,] 第i行x[,j] 第j列x[,c(1,3)]第1和3列x["name",]名为"name"的行矩阵索引数组是矩阵的扩展,它把数据的维度扩展到两个以上。通过函数array()方便地创建数组。数组创建建立一个三维数据的数组,其维度是2*5*3。在结果中会依次展示3个2行5列的矩阵。>(w_array<-array(1:30,dim=c(2,5,3))),,1[,1][,2][,3][,4][,5][1,]13579[2,]246810,,2[,1][,2][,3][,4][,5][1,]1113151719[2,]1214161820,,3[,1][,2][,3][,4][,5][1,]2123252729[2,]2224262830对于矩阵和数组,dim()

函数将返回其维度的整数值向量:对于矩阵,函数nrow()

和ncol()

将分别返回行数和列数:矩阵行、列和维度>a_matrix<-matrix(1:10,nrow=5,ncol=2)>w_array<-array(1:30,dim=c(2,5,3))>dim(a_matrix)[1]52>dim(w_array)[1]253>nrow(a_matrix)[1]5>ncol(a_matrix)[1]2建立下图所示的矩阵:对第2行、第3列进行索引练习v1v2v3v4u112710u234811u356912数据框data.frame和列表list,也是一个二维数据。在使用R语言进行数据分析和挖掘的过程中,向量和数据框的使用频率是最高的,list则在存储较复杂的数据时作为数据对象类型。数据结构:数据框和列表数据框是仅次于向量的最重要的数据对象类型。在实际操作中,通常会用数据框的一列代表某一变量属性的所有取值,用一行代表某一样本数据。data.frame()函数可以直接把多个向量建立为一个数据框,并为列设置名称。数据框创建>(my.datasheet<-data.frame(site=c('A','B','A','A','B'),+season=c('winter','summer','summer','spring','fall'),+pH=c(7.4,6.3,8.6,7.2,8.9)))siteseasonpH1Awinter7.42Bsummer6.33Asummer8.64Aspring7.25Bfall8.9可以通过names(<数据框>)来读取并编辑列名称。数据框创建>names(my.datasheet)[1]"site""season""pH">names(my.datasheet)[1]<-'type'>names(my.datasheet)[1]"type""season""pH"索引列<数据框对象>[,列下标向量],直接获取相应列的所有元素,并以数据框对象形式返回。例:iris[,2]索引行<数据框对象>[行下标,],直接获取相应行的所有元素,例如:iris[1:2,]数据框索引列名称索引列下标索引<数据框对象>$列名称<数据框对像>[[“名称”]]<数据框对象>[[列下标]]<数据框对象>[,列下标]iris$Sepal.Lengthiris[["Sepal.Length"]]iris[[2]]iris[,2]iris[1:2,]list()可以用于创建列表对象。例:以下对象my.list由三个成分组成:第一个是名称为stud.id的数值,第二个是名称为的字符串,第三个是名称为stud.marks的数值向量。列表创建>(my.list<-list(stud.id=34453,+='张三',+stud.marks=c(14.3,12,15,19)))$stud.id[1]34453$[1]"张三"$stud.marks[1]14.312.015.019.0可以使用函数length()来检查列表成分的个数可以通过函数unlist()把列表中的所有元素转换为向量元素,转换后的向量元素的个数和列表中所有数据对象的个数相同。列表创建>unlist(my.list)stud.idstud.marks1stud.marks2stud.marks3stud.marks4"34453""张三""14.3""12""15""19“>length(my.list)[1]3列表索引索引x[n] 列表显示元素nx[[n]] 列表的第n个元素x[["name"]]名为"name"的元素x$name 同上.因子提供了一个简单而又紧凑的形式来处理分类数据。因子用level(水平)来表示所有可能的取值。如果数据集有取值个数固定的分类变量,因子特别有用。通过factor()函数创建因子,使用格式:factor(x=character(),levels,labels=levels,exclude=NA,ordered=is.ordered(x),nmax=NA)数据结构:因子通过factor()函数创建因子,参数如下。创建因子参数描述x表示需要创建为因子的数据,是一个向量levels表示所创建的因子数据的水平,如果不指定的话,就是x中不重复的所有值labels用来标识这一水平的名称,与水平一一对应,方便用户识别exclude表示有哪些水平是不需要的ordered一个逻辑值,若为TRUE,表示有序因子,为FALSE则表示无序因子nmax表示水平个数的上限通过gl()函数创建因子。创建因子使用格式:gl(n,k,length=n*k,labels=seq_len(n),ordered=FALSE)参数描述n表示因子水平的个数k表示每个水平的重复数length表示生成的序列的长度labels一个n维向量,表示因子水平ordered一个逻辑值,若为TRUE,表示有序因子,为FALSE则表示无序因子通过下面的例子,可以加深理解因子的储存形式。因子型数据的储存原理>chr<-c('R','Python','R','Ruby','Lisp','R')>class(chr)[1]"character">(f<-factor(chr))[1]RPythonRRubyLispRLevels:LispPythonRRuby>class(f)[1]"factor">storage.mode(f)[1]"integer">as.numeric(f)[1]323413>levels(f)[1]"Lisp""Python""R""Ruby"通过这个例子,可以知道f的类型是整数形式,并且1对应的是“Lisp”,2对应的是“Python”,3对应的是“R”,4对应的是“Ruby”,这些是按照字母顺序排序的。小结数据类型数值型(numeric)、字符型(character)、复数型(complex)、逻辑型(logical)、特殊值数据结构向量(vector)、数组(array)、矩阵(matrix)、数据框(dataframe)、列表(list)、因子(factor)综合实验巩固R语言数据类型和数据结构的概念。掌握数据对象转换和辨别函数的使用方法。掌握向量、矩阵、数组、数据框、列表、因子的常用方法,并能灵活综合运用。熟悉集成开发环境RStudio。能够通过help方法自学函数及其中参数的用法。实验目标第2章讲义中的案例第2章综合实验第2章使用的函数第2章思考与练习实验内容及资料目标:掌握数据对象转换和辨别函数的使用方法。内容:学习R中常见数据类型的辨别与转换函数,从中选择3-5个函数编程实现,并分析数据对象的类型。思路:数据类型的辨别与转换数据类型的查看实验1:数据对象的转换数据类型辨别函数转换函数数值型(numeric)is.numeric()as.numeric()字符型(character)is.character()as.character()逻辑型(logical)is.logical()as.logical()复数型(complex)plex()plex()整数型(integer)eger()eger()浮点型(double)is.double()as.double()特殊值(NA)is.na()as.na()mode()class()typeof()目标:学习R语言数据结构的概念,掌握向量的运用。内容:实验2:向量A班《微积分》与《线性代数》成绩如下:微积分

1008877665544线性代数997060873191(1)利用R语言向量求出班里人数(2)求出微积分成绩的最大值和最小值length(x)#判断向量的长度which.min(x)#求向量的最小值所在的位置x[which.min(x)]#索引最小值位置的数值目标:学习R语言数据结构的概念,掌握矩阵的运用。内容:实验3:矩阵1.创建矩阵(1)将已有数据转化为矩阵(2)特殊矩阵的快捷创建方法2.矩阵的查看(1)查看矩阵的维数(2)提取矩阵的行数与列数(3)引用元素(4)给行列命名(5)调用行列名3.矩阵的运算(1)将多个矩阵合并(2)矩阵的加减乘(3)矩阵的逆(4)矩阵的转置(5)特征值分解实验3:矩阵matrixmatrix(0,nrow=3,ncol=3)diag(rep(1,4)))#创建一个对角线上全是1的矩阵,diag为对角矩阵diag(1:4)#创建一个对角线上元素不同的矩阵dim()#查看矩阵的维数nrow()#查看矩阵的行数ncol()#查看矩阵的列数colnames(M)=paste0(“x_”,1:4)#给矩阵的列命名rownames(M)=1:3#给矩阵的行命名rbind(A,B)#将矩阵列对齐,行相加(r代表行,row)cbind(A,B)#将矩阵行对齐,列相加(c代表列,col)solve()

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论