R语言简介
1.1 R是什么
R语言是一种开源的脚本语言,也是一种为统计计算和绘图而生的语言和环境, 在数据分析与预测以及数据可视化等方面享有良好的声誉。
1993年,R的最初版本发布给研究人员使用,解决复杂数据统计分析任务,并用多样化的图形来展示结果。
R的名字来源于它当时的两名开发者,新西兰奥克兰大学的Ross Ihaka和Robert Gentleman。
R是对S统计绘图语言的继承与发展。R系统是开源、免费的,由R开发核心小组负责其开发及维护。
1.2R语言的特点
1、算法覆盖广,软件扩展易
作为统计分析工具,R语言几乎覆盖整个统计领域的前沿算法。
CRAN(Comprehensive R Archive Network)上已经有一万多个可以获取的R扩展包,并且以每个月200多个包的速度发布,内容涉及各行各业,可以适用于各种复杂的统计,如:贝叶斯推断、分类方法、计量经济学、生态学、金融学、遗传学、机器学习、稳健统计、空间统计、生存分析、时间序列等多个方面。数千个R包,上万种算法,开发者都能找到可直接调用的函数实现。
非过程模式
Python虽然也支持命令模式,但是相对来说,更偏向于流程控制语句,也就是可以写一堆语句,然后执行。R本身基本上不需要用到流程控制(当然,它也支持流程控制)。
交互性
敲回车,出结果。但是又不像SPSS那种用鼠标扎针的交互方式。
1.3安装R
-
进入R官方下载网址https://cran.r-project.org/ 。
-
选择相应的操作系统,如果使用Windows系统,可以点击“Download R for Windows”。
-
选择安装风格,建议选择基本安装。
-
点击“Download”下载安装程序 。
-
下载好后双击exe文件进行安装,安装好后在“开始”菜单里可以找到R程序,点击即可运行。
1.4安装与使用包
包是R函数、数据、预编译代码以一种定义完善的格式组成的集合。
R中的包存储在计算机上名为library的目录下,使用函数.libPaths ()可以查看该文件夹在计算机中的具体路径,函数library ()和search ()则可分别显示已安装和加载的包列表。
R已经预装了一组标准的包,其他包则可以通过下载安装来使用。
目前CRAN上提供了上万个可使用的包。
1.4.1安装包
安装包:install.packages('包名')
注:不添加参数执行install.packages()将显示一个CRAN的镜像站点列表,选择相应的镜像(通常选择离自己最近的节点)后再选择要安装的包名即可
> install.packages("stringr") #安装一个用于字符串处理的包
使用 available.packages 可以查看在库中的包 的所有信息(请注意,因为那里的包有成千上万个,所以这需要好几秒钟运行):
View(available.packages())
如果想安装到不同的位置,把参数 lib 传递给install.packages, repo 为 NULL 意味着包已经被下载 ,type为source意味着现在就构建包:
install.packages(
c("xts", "zoo"),
lib = "some/other/folder/to/install/to", repos = "http://www.stats.bris.ac.uk/R/"
)
1.4.2加载包
加载包:library('包名')
> library ("stringr") #载入字符串处理包stringr
1.4.2.1搜索路径
search()函数可查看所有已加载的包:
> search()
[1] ".GlobalEnv" "package:plyr"
[3] "tools:rstudio" "package:stats"
[5] "package:graphics" "package:grDevices"
[7] "package:utils" "package:datasets"
[9] "package:methods" "Autoloads"
[11] "package:base"
1.4.2.2库和已安装的包
installed.packages 函数将返回一个数据框,它包含了 R 所知道的你电脑上所有包的信息。
> View(installed.packages())
R 安装时就自带的包(base、stats 以及其他大概 30 个)都存储在你安装 R 的 library 子目 录中。你可通过以下方法取得这个位置:
> R.home("library")
[1] "E:/R/R-36~1.3/library"
> .Library
[1] "E:/R/R-36~1.3/library"
Home 目录可以通过以下方式找到:
> path.expand("~")
[1] "C:/Users/Administrator/Documents"
> Sys.getenv("HOME")
[1] "C:\\Users\\Administrator\\Documents"
可以用 .libPaths 函数查看 R 所知道的所有字符向量 :
> .libPaths()
[1] "E:/R/R-3.6.3/library"
1.4.3维护包
在包被安装后,可以通过 update. packages 完成更新到最新的版本。设置 ask = FALSE参数更新每个包不会提示
update.packages(ask = FALSE)
删除一个包只需要简单地把包含此包的目录从你的文件系统中删除即可。
remove.packages("zoo")
1.5环境
我们所创建的所有变量都需要存储在某处,即环境。环境本身也是另一种类型的变量,我 们可以像对待其他变量一样随意地分配和操作它们,并将其以参数的形式传递到函数中。 它们与列表密切相关,也能用于存储不同类型的变量。事实上,大部分用于列表的语法也 同样适用于环境,而且我们也可以强制地把列表强制当作环境使用
环境的创建使用的是 new.env 函数:
> an_environment<-new.env()
向环境中分配变量的方式与列表完全相同。可以使用双方括号或美元符号运算符。和列表一样,环境变量的类型和大小可以不同:
an_environment[["pythag"]]<-c(12, 15, 20, 21)
检索变量的方式也是如此:你可以使用列表的索引语法,或 assign 的对立函数 get:
> an_environment[["pythag"]]
[1] 12 15 20 21
> an_environment$pythag
[1] 12 15 20 21
> get("pythag", an_environment)
[1] 12 15 20 21
可以把环境参数传入 ls 和 ls.str 函数中,列出它的所有内容:
> ls(envir = an_environment)
[1] "pythag"
> ls.str(envir = an_environment)
pythag : num [1:4] 12 15 20 21
可用 exists 函数测试变量是否在环境中:
> exists("pythag", an_environment)
[1] TRUE
使用 as.list 和 as. environment 函数能分别实现从环境到列表或相反过程的转 换。在后一种情况中,还可以使用 list2env 函数,它在创建环境时更为灵活:
> (a_list<-as.list(an_environment))
$pythag
[1] 12 15 20 21
> as.environment(a_list)
<environment: 0x000002cb88969210>
> list2env(a_list)
<environment: 0x000002cb891eaef0>
下列快捷函数可以同时访问全局环境(那些你从命令提示符中分配的变量的存储空间)和 基础环境(那些 R 基础包中自带的基础函数和变量):
> non_stormers<<-c(3, 7, 8, 13, 17, 18, 21)
> get("non_stormers", envir=globalenv())
[1] 3 7 8 13 17 18 21
> head(ls(envir=baseenv()), 20)
[1] "-" "-.Date"
[3] "-.POSIXt" "!"
[5] "!.hexmode" "!.octmode"
[7] "!=" "$"
[9] "$.DLLInfo" "$.package_version"
[11] "$<-" "$<-.data.frame"
[13] "%%" "%*%"
[15] "%/%" "%in%"
[17] "%o%" "%x%"
[19] "&" "&&"
在另外两种情况下也可能遇到环境。首先,调用函数时,函数所定义的所有变量都被存储 在属于该函数的环境中(函数及其环境有时称为闭包)。其次,加载包时,包中的函数将 存储于其搜索路径的环境中。
1.6工作空间
启动R环境之后,交互地运行一些语句,直到退出R,这就构成了一个R会话
会话中创建的所有的对象都被临时保存在全局环境.GlobalEnv,称为工作空间
当使用q ()函数或直接关闭RGui窗口退出R环境时,就结束了当前会话。系统提示是否保存工作空间,如果选择“是“,当前环境中的所有对象都会被写入到一个叫做“.RData”的文件中,使用过的命令行历史则会保存在名为“.Rhistory”的文件中
这些文件会被默认地保存在当前R会话的工作目录中。下次从此目录启动R会话时,软件会自动将对象、命令历史载入到工作空间。
R提供了一些管理工作空间的函数
利用这些函数可以方便地完成目录、对象与包的管理
函 数 | 说 明 |
---|---|
getwd () | 显示当前工作目录 |
setwd () | 修改当前工作目录 |
ls () | 显示当前工作空间中的所有对象 |
str () | 显示对象的结构 |
ls.str () | 显示对象中每一个变量的结构 |
exists () | 当前工作空间内是否存在某个对象 |
rm () | 删除一个多或多个对象 |
q () | 退出R。在这之前会询问是否保存工作空间 |
install.packages () | 安装包 |
library () | 载入包 |
直接调用相应的管理函数
> getwd () #查看当前工作目录
[1] "C:/Users/Temp"
> ls () #查看工作空间所有对象
[1] "all_data" "classifier" "count" "error"
[5] "i" "index" "iris.Test" "iris.Training"
[9] "lm_fit" "positions" "predictions" "testing"
[13] "training" "us.cities" "x" "x1"
[17] "x2" "x3" "y"
如果希望删除内存中的对象,可以使用rm ()函数。嵌套执行rm (list = ls ())则会清除当前工作空间中的全部对象
> rm(i,x1,x2,x3) #删除I,x1,x2,x3等
> rm (list = ls ())
> ls ()
character(0)
1.7 工作区
工作时,我们往往想知道已经创建的变量及其内容。
用 ls 函数即可列出现有变量的名称。
默认情况下,变量名以 . 开 头的是隐藏文件。要查看它们,可传入 all.names=TRUE 参数:
> ls()
[1] "a" "another_matrix" "avg"
[4] "b" "biao" "c"
[7] "cc" "csv1" "d"
> ls(pattern = "z")
[1] "fenzu1" "fenzu3" "z" "zz"
ls.str 函数查看变量的结构
browseEnv 也提供类似的功能,但它在网页浏览器中以 HTML 页面的格式显示其输出
rm 函数删除变量来清理区间
rm(变量名)
rm(list = ls()) #删除所有变量,小心使用
1.8文件路径
R 有一个工作目录,默认为文件被读写的地方。我们可以使用 getwd 查看到它的位置,并 使用 setwd 来改变它:
> getwd()
[1] "C:/Users/Administrator/Documents"
> setwd("c:/windows")
注意:每个路径的目录部分由正斜杠分隔。也可以使用双反斜杠来表示 Windows 的路径,不过正斜杠仍为首选:
可以使用 file.path 来从各个目录中创建文件路径。它会自动地在目录名称之间 插入正斜杠。它就像一个更加简单快速的为处理路径而定制的 paste 函数:
> file.path("c:", "Program Files", "R", "R-devel")
[1] "c:/Program Files/R/R-devel"
> R.home()
[1] "E:/R/R-36~1.3"
路径可以是绝对路径(从驱动器名称或网络共享处开始)或相对目录(相对于当前工作目 录)。在后一种情况中,. 用于当前目录而 .. 用于父目录。~ 代表当前用户主目录。path. expand 能将相对路径转换为绝对路径:
> path.expand(".")
[1] "."
> path.expand("..")
[1] ".."
> path.expand("~")
[1] "C:/Users/Administrator/Documents"
basename 只返回文件名,而不包括前面的目录位置。与之相反,dirname 只返回文件的目录:
> file_name <- "C:/Program Files/R/R-devel/bin/x64/RGui.exe"
> basename(file_name)
[1] "RGui.exe"
> dirname(file_name)
[1] "C:/Program Files/R/R-devel/bin/x64"
1.9RStdio集成开发环境
Rstudio是一个免费的R语言IDE
它具有语法高亮、命令补全、对象浏览、语法错误检查以及断点调试等功能,可以大大提高开发效率
Rstudio可以在https://www.rstudio.com/获取,选择对应的系统平台进行下载安装
默认情况下窗口被分成如下四个区域:
① 代码编辑、数据预览窗口;
② 工作空间、命令历史;
③ 控制台;
④ 文件浏览、绘图、包管理等。
1.10获取帮助
R的内置帮助系统提供了当前已安装包中所有的函数细节和使用示例
使用help.start()打开帮助HTML的帮助文档首页,包括了关于R语言的一整套学习和帮助材料
R提供了不同的函数高效地帮助使用者查找帮助信息
函 数 | 说 明 |
---|---|
help.start () | 打开帮助文档首页 |
help (),? | 查看 |
help.search (),?? | 以关键字搜索的形式搜索本地帮助文档 |
RSiteSearch () | 以关键字搜索的形式搜索在线帮助文档 |
apropos () | 列出名称中含有某字符串的所有可用函数 |
example () | 查看某个函数的使用示例 |