第 1 章 正式开始写代码之前,我该干什么?
1.1 RStudio的配置
1.1.1 下载R包慢?试试这个!
我们可以通过选择国内镜像使得下载R包变得更快一些。具体操作步骤为:
1.点击R上方选项卡Tools。
2.点击 Global Options。
3.点击左侧选项卡Packages。
4.点击change改变使用的CRAN镜像,选择任意一个国内的镜像都可以。
1.1.2 中文乱码?试试这个!
保存R Srcipt或者读取时中文乱码时不妨试试这个方法
1.点击 R上方选项卡Tools。
2.点击 Global Options。
3.点击 左侧选项卡Code。
4.点击 上方选项卡Saving。
5.点击 change改变默认编码格式为UTF-8。
1.1.3 关闭时别问我存不存.RData了好吗?
每次关闭的时候总是问我保存不保存到 .RData,但这东西是什么?看起来如果我不保存就会丢失什么?实际上,这是R把工作环境中的变量保存下来了,在下一次载入的时候便可以从.RData中载入到工作环境中。不过如下一节所说,本文建议如果不是明确清楚自己需要保留这些变量,每次不必保存,而且运行R Srcipt时都可以先清除环境中的变量再运行。这是为了保证代码的正确性,不被历史数据所干扰。所以,关闭在R的时候可以选择不把工作环境中的变量保存起来,RStudio启动之时也不从.RData中读取上次工作环境中的变量。(当然,如果明确清楚理解自己想要保存工作环境中的变量,且在每次打开时候读取上一次的工作环境中的变量,请勿关闭此功能!)
1.点击 R上方选项卡Tools。
2.点击 Global Options。
3.取消勾选Workspace中的启动时读取历史变量。
4.选择Never关闭每次询问是否保存。
1.2 建立新项目以及新建R脚本
希望你的电脑上已经安装好了R与RStudio,当然使用搭建在服务器上的RStudioServer也是可以的。(能用ipad随时随地登录RStudio写代码不是一件很方便的 事情吗,本文会在后续章节介绍RStudio Server、Jupyter Lab、MySQL Server、code server(VS code服务)的安装与使用方法)
1.2.1 新建项目
当然打开RStudio,第一步是要新建一个脚本用于写代码,不过这里推荐使用RStudio右上角自带的R Project功能建立一个R Project。他的好处主要在于:
一:把不同的项目分隔开而不是把所有的文件放在一个文件夹里。
二:可以使用相对路径读取和写出文件,这样便于分享代码,只要把整个包含代码和数据的项目文件分享出去便可以直接运行,不必再修改绝对路径、考虑文件放在哪里的问题。
新建项目的时候全都选择新项目、新目录就可以。(当然如果我们后续需要克隆别人的仓库或者自己新建git仓库需要使用别的选项卡,这会在第四章涉及到)
1.2.2 新建脚本
接下来,已经建立了R project之后,便是建立一个R Script,你可以通过点击的办法新建,但是本文更推荐使用Ctrl+Shift+N的快捷键新建一个R Script。因为这样更加快捷,有助于提升效率。
保存 保存 保存
新建脚本之后先保存而不是写代码,先选择保存的位置以及保存的名称,这是一个好习惯,防止代码的丢失。可以使用Ctrl+S的快捷键进行保存,当然你也可以选择点击左上角的保存按钮进行保存。
1.3 索引、清空工作环境与包库加载
1.3.1 索引
首先,非常推荐的是使用索引以及注释。在R中我们可以使用#开始插入注释,在一行之内的任何文字都会被注释掉,被注释的文字、代码是不会被运行的。在RStudio中我们可以使用Ctrl+Shift+R插入一个索引,按下此快捷键后便会自动弹出一个对话框,可以输入索引的内容,R会自动用-补齐。如果你显示以下内容,恭喜你,你已经成功的插入了一个注释和一个索引。
# 这是一个注释
# 这是一个索引 -----------------------------------------------------------------
索引的作用一个是可以对很多的代码进行分块,还有就是可以通过点击右上角一个含有很多横线的图标,看到全文的索引,并且可以点击跳转,这对于代码行数很多的时候是一个好消息。
1.3.2 第一块代码–清空工作环境
OK,很多人上来就开始写代码,这可能并不是一个最好的做法,最好的办法是每次都先清空环境。
这是由于代码需要不断的调试,(意思就是大家都在写BUG而不是写代码)所以希望每一次运行的时候都是在空的工作环境运行,而不是混杂了上次随意定义的变量或者保存一些错误的历史代码在工作环境中。所以我们使用如下代码清空工作环境:
rm(list = ls())
1.3.3 第二块代码–加载包库
我们在清空了工作变量之后,应该先在脚本前半部分加载所有的需要的包库。
所有和前期而不是等到用到了再在使用的地方去加载
脚本内而不是在Console中加载
推荐使用如下代码块1加载,而不是代码块2:
原因是这样既简洁又节约了行数,尤其是要加载很多包的时候。
(当然,这样的加载方式需要对每个包都加载一遍,可能对于逐个的调整不利。但笔者拙见是,至少在最终版使用这样的代码是简洁的)
# 代码块1
<- c('dplyr', 'ggplot2', 'magrittr', 'readr', 'stringr', 'rio', 'ggpubr')
pkgs # 如果你从未安装过这些包,使用如下被注释的代码安装
#install.packages(pkgs)
<- lapply(pkgs, library, character.only = TRUE) ins
# 代码块2
#而如果采取一个一个输入的方式,便需要很多行,而不是三行
#install.packages('dplyr')
library('dplyr')
#install.packages('ggplot2')
library('ggplot2')
#install.packages('magrittr')
library('magrittr')
#install.packages('readr')
library('readr')
#install.packages('stringr')
library('stringr')
#install.packages('rio')
library('rio')
#install.packages('ggpubr')
library('ggpubr')
如上的代码的意思是先将所有的包名放在一个向量内,再使用lapply循环调用library加载所有包,并且需要给library传递一个参数叫做character.only = TRUE。可能对于刚学R的人去理解apply函数族的使用是困难的,但是先忘记他具体的调用方法,先使用。
1.4 小节简单示例
# clear envir -------------------------------------------------------------
rm(list = ls())
# load pkgs ---------------------------------------------------------------
#当然,使用plot并不使用下列包,这仅做加载包的示例用
<- c('dplyr', 'ggplot2', 'magrittr', 'stringr', 'rio', 'ggpubr')
pkgs <- lapply(pkgs, library, character.only = TRUE)
ins # plot --------------------------------------------------------------------
plot(1:4)