R语言入门和重要package介绍(上)
-2020年实习学生技能提升第1课 -
R语言入门
和
重要package介绍
生态环境部环境规划院
气候变化与环境政策研究中心
主讲人:任怡萌 中国人民大学
一、介绍与准备工作
1.1
R语言介绍与R的安装
R是为统计计算和绘图而生的一种语言。在不断发展的过程中,R所能完成的工作越来越多,目前,除了数据预处理、可视化、统计建模等等传统的工作,R也可以像Python那样,完成一些更偏向于“计算机方面”的东西,比如庞大数据集的处理,机器学习、深度学习的模型等等。许多公司会要求员工在R和Python之间任意掌握一门即可。
或许一些非统计专业的同学会好奇,如果要拟合一个回归模型去探索一个因素对另外一个因素的影响,为什么不直接在Excel里面去做呢?毕竟Excel也有公式功能和很方便的自动填充功能,也可以很方便地做一个数据透视表等等辅助工作。但是比起Excel,使用R语言可以很方便地将数据、图形或者模型的结果保存为一个对象,以便于进一步的分析,这是R语言一个很大的优势。
关于R的获取,我们可以从R语言的官方网站https://www.r-project.org/进行下载,但如果从国内的一些镜像网站(如https://mirrors.tuna.tsinghua.edu.cn/CRAN/)下载,速度一般会快一些,也会更稳定。
完成R的安装后,我们就可以进入R控制台界面,其默认图标就是R的标志。(如下图)
R标识
下图展示了控制台界面内执行命令的两种方式:可以通过输入一行命令后按下回车来执行一行语句,也可以通过source函数执行一个R脚本文件。在本例中,脚本文件的内容和分行输入的代码相同,效果也完全一致。一般在工程中不会直接采用分行运行的方式,而是会写成脚本文件。但是大家可以看到,不论是分行执行还是运行脚本文件,在R的控制台界面内进行都是很不方便的,尤其不便于对代码中的错误进行检查和调试(即debug)。这时候,集成的开发环境就显得很必要了。
1.2
RStudio介绍与安装
RStudio界面介绍
RStudio是目前最常用的R集成开发环境(IDE)。它的整个界面分为上下左右4个部分(如上图),左上角是脚本文件编辑区,如果要去编辑一个脚本文件,可以在这样一个编辑框里面写一个完整的文件的内容而不直接一行一行地执行它。左下角就是控制台,它和刚刚介绍的R的界面是一致的,输入一行然后按回车,就会出现图片中下一行(黑色字体)的内容。右上角显示了当前环境中的变量,也就是在执行程序的时候会涉及到一些变量。另外这个区域的“history”选项卡中还存储了最近执行的所有语句,虽然在左下角的控制台中,输入一行代码时按下键盘“↑”键也可以快速输入一条之前执行过的语句,但如果要查找多条历史,在这里会更方便一些。右下角的区域可以展示当前工作路径下的文件和文件夹、目前命令中绘制出的图以及可用的R包和一些帮助文档。建议大家在使用R的时候,如果要开始一项新的工作,最好在一个新的路径下进行,因为每一个项目对应的数据和脚本文件是不一样的。
1.3
获取帮助
不管是R还是其他编程语言,在入门时一个很重要的问题就是如何去获取帮助。很幸运的是,几乎每个R函数都有自己的帮助页面。如果对于已经载入的某一个包内的一个函数,如果我们不清楚它的用法,可以通过在控制台输入“?”(英文符号问号)+函数名来进入函数的帮助页面。同样地,也可以输入“help(函数名)”(可以给函数名加上引号,也可省略),完成相同的查询。对于未载入或不确定是否已载入的包中的函数,可以输入两个问号+函数名或help.search()函数进行查询。另外,R中还有一些其他可以提供帮助的函数,见下图。
一般来说,面对之前完全没有接触过的函数时,我建议大家通过官方的这种帮助文档来了解这个函数的作用和各个参数的设定及意义,但对于一个我们已经使用过、知道大概用法的函数,只是有某一个细小的功能不太清楚的话,我更建议大家利用谷歌等搜索,或者去stackoverflow、CSDN这些论坛上查找问题的解决方式,这样会比从很长的帮助文档中寻找一个细小的点来得更快一些。
二、基本操作
我们刚刚已经提到了一些使用R语言的基本操作,比如工作目录等等。接下来我们来详细看看使用R语言完成工作的一些常用基本操作。
2.11
工作空间和工作目录
工作空间和工作目录是不一样的两个概念。工作空间是指R当前的工作环境,其中包括环境中的变量和当前的工作环境中一些代码的执行情况。在未保存的情况下退出RStudio,它会提示是否要保存这个“workspace”,就是指要不要把现在这个工作空间的内容全部保存下来。而工作路径相当于我们平时所说的“文件夹”这样一个概念。如果要将一个项目单独放在一个路径下,需要在执行之前设置好工作的路径。
关于工作目录,常用的函数有getwd()和setwd(),下图是一个管理工作目录的例子:
在刚开始使用R时,一个很常见的问题就是工作结束后不清楚自己的代码文件和数据文件等存放在哪里,可见工作路径的管理是很重要的一个操作。另外,别忘了在界面右下角的视图中可以很方便地看到文件夹中的文件和子路径。
路径有两种常见的表达方式,一是绝对路径,二是相对路径。绝对路径可以理解为“从根目录开始完整地表述”。一般ios系统下根目录是“users”,对Windows用户来说根目录就是储存磁盘。相对路径是基于当前位置的表述,上图的例子中setwd()的参数就采用了相对路径表述,当前目录的下一级可以写作“./xxx”,上一级可以写作“..”。还有一点要说明的是,Windows系统的路径写法中,表示文件夹的从属关系可以使用“/”(如上例),也可以使用“\\”,但单独的反斜杠“\”可能无法正确表示。
2.2
文件的读入和写出
文件的读入和写出是我们在R的学习和工作中最常用的操作之一。在R中,大多数常见文件类型,比如csv表格、excel表格、txt文本文档、bmp、jpeg、svg等图片类型以及pdf等,都有对应的函数可以很方便地读入和写出。比如read.csv()和write.csv()分别可以完成对csv表格的读入和写出。下图列出了一些常用的图像文件写出的函数。在我们的工作中,常常会需要输出一些矢量图以方便进一步的处理和分析。目前用R存储矢量图eps格式时,图片中一些中文内容可能会变为乱码,因此可能需要后续进行PS修改等。
2.31
R包
除了刚才所说的一些比较基础的操作,很大一部分常用操作都我们需要借助于R的包(packages)。R包是一个集函数、数据、预编译代码为一体的完整的集合。正常完成R的安装后,我们已经安装了一些默认的包,比如base包、stats包等,而另外很多常用的包需要我们自定义下载。在R控制台中使用install.packages()函数即可完成安装。安装后的包并未载入工作环境中,需要使用library()函数完成载入操作。下图展示了一个安装并导入包的例子:
install.packages()和library()函数使用实例
2.41
自定义函数
除了R内置的函数和R包中的函数,我们可以根据需求自己定义一个函数。自定义函数的语法为:
`函数对象名` <- function(参数表)
{
# 一些语句
# 最后一行为返回值,如果最后一行没有返回值则这个函数没有返回值
}
下图展示了自定义函数的定义与调用的一个例子。
自定义函数的定义与调用
2.51
变量与注释
1
赋值
R中的赋值符号有两个:“<-”和“=”。在函数传参时一般使用“=”,但给环境中对象赋值时推荐采用“<-”。除了个人习惯的不同之外,两者在所创建的变量的作用域上也有微妙的差异。
2
变量命名
R语言的变量名中可以包含字母、数字以及“_”和“.”,但不能以数字开头。一般来讲,变量名应有明确而清晰的含义,以便于他人和自己的理解。
3
注释
R语言中的注释以“#”开头,一行中“#”之后的内容会被解释器忽略。编写代码时,尤其在大型工程中,多写注释是很好的习惯,合适和适量的注释可以大大提高代码的可读性。
三、储存数据的对象类型
R作为一门面向数据科学的编程语言,具有丰富的数据储存对象类型,其中常用的有向量、矩阵、数组、因子、列表和数据框等,它们有着各自不同的特性,也有一些相似之处。不同于许多主流编程语言,R语言的下标计数是从1开始的,这点在刚上手R时可能需要格外注意。
3.1
标量、向量(vectors)
R中的向量与代数中的“向量”的概念基本一致,它的每一个元素都应该有相同的类型,比如都是整数或都是字符串。下图展示了向量对象的创建、加减运算、索引等基本操作:
向量的创建、加减运算、长度获取和下标访问
3.21
矩阵(matrix)
R中的矩阵相当于一个二维数组,与我们所熟悉的代数中的矩阵基本一致。其中所有元素必须为同一类型。矩阵的基本操作示例如下图。
矩阵的创建和下标访问
3.31
数组(array)
比起矩阵,R的数组相当于是一个维数上更加灵活的数据结构,可以储存二维及以上的数据。其中所有元素必须为同一类型。数组的基本操作示例如下图。
数组的创建、各维度名称设置和下标访问
3.4
因子(factor)
什么是因子型变量呢?举个例子,比如要研究北、上、广、深4个城市的碳排放量,我们希望数据能够按照“北上广深”的顺序排列,赋予“城市”这个变量以一定的顺序。这时最好的方法就是将“城市”这个变量设置为因子型变量。另一个例子是身体状况的分类:有Excellent、Improved和Poor三类,其表示为字符串型,但我们希望能体现其中的顺序。将这一变量设置为因子型变量相应的代码如下:
将向量转为因子型变量
因子型变量的意义主要体现于接下来会提到的数据框中。
3.51
列表
以上所提到的向量、矩阵和数组等数据结构中,所有元素都必须属于同一类型,如同为整型、同为字符串型等。而列表中允许各元素类型不同。下图展示了列表的创建与元素访问方式。
列表的创建与元素访问
3.6
数据框(data frame)
刚刚提到的列表似乎可以完成类似“表格”形式的储存:如果所有元素都是一个向量,并为每个元素设置标识充当“表头”,这个列表可以变得很像一个Excel表格。不过这样的事情采用数据框这个数据结构更方便,因为它有许多现成的函数和包(如dplyr),且是许多画图的包(如ggplot2)直接对接的数据结构。
下图展示了数据框的一些基本操作。除此之外,dplyr包中也有许多实用的数据框操作函数,将在4.1中进行更详细的介绍。
数据框的创建、基本信息查询及访问
整理:段祎然 清华大学
排版:叶舒
农村清洁取暖温室气体与大气污染物
协同控制模型
核算清洁取暖政策实施前后的目标区域能源结构变化,以及温室气体与大气污染物的排放量,并将核算结果可视化呈现。
链接:http://140.143.189.230:8000/
或登陆城市温室气体网站http://www.cityghg.com后从“Module & Platform | 平台&模块”
亦或识别下方二维码进入。
核算清洁取暖政策前后的目标区域能源结构变化及温室气体与大气污染物的排放量,并将核算结果可视化呈现
中国高空间分辨率温室气体在线平台
CHRED是较为彻底的、自下而上建立的中国高空间分辨率的排放网格数据(PC端和手机端均可)
https://wxccg.cityghg.com/geo
通过http://www.cityghg.com➡Data | 数据➡中国高空间分辨率温室气体在线平台
亦或识别下方二维码进入
中国高空间分辨率的温室气体排放网格数据
中国温室气体可视化平台V1.0
海量中国城市温室气体数据,一秒成图
使用快捷方便(PC端和手机端均可)
http://wxccg.cityghg.com/charts/chartsList
或者登陆http://www.cityghg.com后,
从“Module & Platform | 平台&模块”
亦或识别下方二维码进入
海量中国城市温室气体数据,一秒成图
关于我们
欢迎关注