R
R语⾔前⾝是S语⾔,S语⾔是由AT&TBell实验室的RickBecker、JohnChambers、AllanWilks开发的⼀种⽤于进⾏数据探索、统计饭呢西、作图的解释性语⾔。
最初S语⾔的实现版本主要是S-PLUS,S-PLUS是⼀个商业软件,基于S语⾔由MathSoft公司的统计科学部进⼀步完善。R语⾔最初由新西兰⼤学
的RossIhaka和RobertGentleman开发。因为R语⾔是基于S语⾔的⼀个GUN项⽬,所以也可以当作S语⾔的⼀种实现,通常使⽤S语⾔编写的代码可不不做修改地在R语⾔环境下运⾏。
R语⾔是⼀套开源的数据分析解决⽅案,⼏乎可以独⽴完成数据处理、数据可视化、数据建模、模型评估等⼯作,⽽且可以完美配合其它⼯具进⾏数据交互会。具体来说,R语⾔具有以下优势:
R语⾔作为⼀种GNU项⽬开放了全部源代码,⽤户可以免费下载使⽤和修改。R语⾔可以运⾏在多种平台上,包括Windows、UNIX、MacOS。
R语⾔可以轻松地从各种类型的数据源导⼊数据,包括⽂本⽂件、数据管理系统、统计系统乃⾄Hadoop、Spark等,同样可以将数据输出并写⼊这些系统中。
R语⾔内置多种统计学及数据分析功能,因为有S的⾎缘,所以R语⾔⽐其它统计学或数学专⽤的变成语⾔有更强⼤的⾯向对象的功能。
R语⾔拥有顶尖的制图能⼒,不仅包括lattcie包、ggplot2包对复杂数据进⾏可视化,更有rCharts包、recharts包、plotly包实现数据交互可
视化,甚⾄可以利⽤功能强⼤的shiny包实现R与Web整合部署,构建⽹页应⽤,帮助不懂CSS、HTML的⽤户利⽤R快速搭建⾃⼰的数据分析APP应⽤。
R语⾔也存在固有的缺点,⽬前主要问题包括
R语⾔是⼀种解释性语⾔,和其它编程语⾔相⽐,速度略显慢⼀些。随着硬件和R⾃⾝的发展,这个问题已经被慢慢弱化,如果能够熟练运⽤向量化运算,可⼤⼤提⾼速度,使⽤R内置的分析函数效率⾼很多,因为很多函数都是由C或Fortran编写的。
R所有的计算实际是基于内存进⾏的,这就意味着在处理数据过程中,数据必须完整地转⼊内存,这在处理⼩型数据是没有任何问题的,但遇
到⼤数据时就会变得很严重。但是这个问题也得到了⼀定的解决,利⽤并⾏包提升R的性能,或利⽤R结合Hadoop进⾏⼤数据分析⼯作。
由于R语⾔的⾃由各种包的编写者来⾃不同领域,所以⼀定程度上⽐较混乱,没有统⼀的命名格式,参数格式不⼀,源代码和⽂档质量良莠不齐。
下载安装
下载地址/
R-3.6.2Windows版本/bin/windows/ba/
R语⾔IDE/RStudio
RStudioIDE只能⽤于R开发,不能⽤它编写其它语⾔的程序,但能得到⼀些R特有的功能。RStudio的好处是可以通过浏览器远程执⾏,可以现
在功能强⼤的服务器上运⾏R,然后在⼿机上远程访问⽽不会损失计算能⼒。Rattle
Rattle是⼀个⽤于数据挖掘的R的图形交互界⾯GUI,可⽤于快捷处理常见的数据挖掘问题。从数据的整理到模型的评价,Rattle给出了完整的解
决⽅案。Rattle和R平台量好的交互性,为⽤户使⽤R语⾔解决复杂问题开启了⽅便之门。Rattle易学易⽤,不要求很多的R语⾔基础,如今已被⼴泛地应⽤于数据挖掘实践和教学之中。
在RStudio中若没有安装rattle包则出现下列错误
>library(rattle)
Errorinlibrary(rattle):不存在叫‘rattle’这个名字的程辑包
RStudio安装rattle包
>es("RGtk2")Warningmessage:
package‘RGtk2’isnotavailable(forRversion3.6.2Patched)
基本原因是此包被移除或者你的⽹根本打不开下载这个包的URL
在RStudio菜单的Tools>GlobalOptions>Packages中,有⼀个CRANmirror选项,没设置过的时候⾃动选择GlobalCDN,这是国外的镜像地址,下载速度慢且容易发⽣上述错误,可以下拉选择China开头的镜像⽹站,选⼀个离⾃⼰近的就可以。
包的镜像地址设置
使⽤biocLite软件对包进⾏安装
>source("/biocLite.R")
#指定⼀个离你最近的国内镜像
>options(BioC_mirror="/bioc/")
>biocLite("包名")
>es("rattle",repos="")
>library(rattle)>rattle()
>es("RGtk2")
tryingURL'/CRAN/bin/windows/contrib/3.6/RGtk2_'
Contenttype'application/zip'length16558916bytes(15.8MB)downloaded15.8MB
package‘RGtk2’successfullyunpackedandMD5sumscheckedThedownloadedbinarypackagesarein
C:UrsjunchowAppDataLocalTempRtmp8IyEgQdownloaded_packages>es("rattle");
Thedownloadedbinarypackagesarein
C:UrsjunchowAppDataLocalTempRtmp8IyEgQdownloaded_packages>library(rattle)
Rattle:AfreegraphicalinterfacefordatasciencewithR.
XXXX5.3.0Copyright(c)2006-2018TogawarePtyLtd.
键⼊'rattle()'去轻摇、晃动、翻滚你的数据。
完成Rattle成功后,Rattle的标签栏会集成数据导⼊、数据探索、数据检验、数据转化、数据建模、模型评估功能。可通过⿏标单击的⽅式完成⼀整套数据挖掘⼯作,并利⽤Log⽇志查看每个操作的R脚本实现,借此学习R语⾔的代码规范及编写。
Rattle
快速⼊门
R语⾔是区分⼤⼩写的及时性语⾔,程序内置的函数可以满⾜基本的数据分析需求。
例如:在命令⾏提⽰符后输⼊⼀条指令1+1或⼀次性执⾏脚本⽂件中的⼀组命令。R语⾔是解释型语⾔,输⼊命令后可以实时响应,类似计算器。
如果R检测到输⼊的命令⾏未结束,会给出⼀个提⽰符
+
加号,提⽰需要在下⼀⾏继续输⼊未完的命名,直到语法输⼊完整为⽌。不然R会
有
unexpectedendofinport的错误提⽰。
>1++
>1+1[1]2
标准赋值
R语⾔的标准赋值符号是
<-
也可以使⽤
=例如:将序列1:10赋予给变量a
>a=1:10>a
[1]
>a<-1:5
>a[1]12345
例如:计算1到5的算数平均数,冒号会创建⼀个从第⼀个数字到第⼆个数字的序列,每个相隔为1,计算得到的序列称为⼀个⽮量。mean是计算算数平均值的函数,括号内的向量被称为函数的参数。
>mean(1:10)[1]5.5
help
如果想要直到某个函数或数据集的信息可输⼊⼀个问号
加上函数名称
如果想查找某个函数可输⼊两个问号
后跟函数关键词
例如:查看中位数函数median的帮助⽂档
>?median
>help("median")>??median
>("median")
其中
?median
相当于
help("median")
,
??median
相当于
("median")。
median
默认情况下,help只能查找已经加载到内存中扩展包的函数和数据。如果想要查找未加载到内存扩展包中的函数和数据,需要指定help函数的
package参数所指向的具体包名和将
e
参数设置为
TRUE
。例如:查找shiny包中的nunExample函数
>he社会现实 lp("runExample")
Nodocumentationfor‘runExample’inspecifiedpackagesandlibraries:youcouldtry‘??runExample’
>help("runExampl割须弃袍的主人公是谁 e",package="shiny")
e(if((package))loadedNamespaces()elpackage,:thereisnopackagecalled‘shiny’
>help("runExample",es=TRUE)
Nodocumentationfor‘runExample’inspecifiedpackagesandlibraries:
youcouldtry‘??runExample’>??runExample
appropos
使⽤appropos函数可以找出所有名字中含有关键字的函数,只在载⼊的包中搜索。
>apropos("plot")
[1]".otAsImage"
[2]".NotebookPlots"
[3]"assocplot"[4]"barplot"
example
⼤多数函数已经有相应的例⼦帮助了解函数的⼯作原理,可以通过example函数来查看。
>example("median")
median>median(1:4)#=2.5[evennumber][1]2.5
median>median(c(1:3,100,1000))#=3[odd,robust][1]3
data
可通过data函数查看datats包中的数据集
data函数
如果要查看本地安装包的所有数据集可使⽤命令
data(package=.packages(ble=TRUE)进⾏查看
>data(package=.packages(ble=TRUE))Warningmessages:
1:Indata(package=.packages(ble=TRUE)):
數據機从程序包'ba'移到了程序包'datats'
2:Indata(package=.packages(ble=TRUE)):
數據機从程序包'stats'移到了程序包'datats'
⼯作空间
⼯作空间workspace是当前R的⼯作环境,存储所有⽤户定义的对象,诸如向量、矩阵、函数、数据框、列表、模型、图形等。
例如:创建对象后查看当前⼯作空间下的对象安装rCharts
>es("devtools")>library(devtools)
载⼊需要的程辑包:uthis>install_github('ramnathv/rCharts')
WARNING:RtoolsisrequiredtobuildRpackages,butisnotcurrentlyinstalled.
PleadownloadandinstallRtoolscustomfrom/bin/windows/Rtools/.DownloadingGitHubreporamnathv/rCharts@master
ramnathv-rCharts-479a4f9/inst/apps/leaflet_chloropleth/data/regions_:truncatedgzipinpu菜篮公 t
::Failedtoinstall'rCharts'fromGitHub:
DoesnotappeartobeanRpackage(noDESCRIPTION)
Inaddition:Warningmessages:1:Inutils::untar(tarfile,...):
‘-xf"C:"-C"C:/Urs/junchow/AppData/Local/Temp/Rtmp8IyEgQ/remotes6448478843272:Insystem(cmd,intern=TRUE):
runningcommand'-tf"C:"'hadstatus1
tidyver
R包是函数、数据、⽂档的集合,是对R基础功能的扩展,学会如何使⽤R包才能真正掌握R语⾔的精华。tidyver中的R包有着同样的数据处理
与编程理念,他们的设计从根本上是为了协同⼯作。安装tidyver
>es("tidyver")
使⽤library函数加载R包
>library(tidyver)
──Attachingpackages───────────────────────────────────────tidyver1.3.0──
tibble2.1.3dplyr0.8.3
tidyr1.0.0stringr1.4.0readr1.3.1forcats0.4.0
purrr0皂角的作用与功效是什么 .3.3
──Conflicts──────────────────────────────────────────tidyver_conflicts()──
xdplyr::filter()masksstats::filter()xdplyr::lag()masksstats::lag()
检查更新
>tidyver_update()
Alltidyverpackagesup-to-date
数据对象
R语⾔拥有很多存储数据的对象类型,包括向量、矩阵、数组、数据框、列表。它们在存储数据的类型、创建⽅式、结构复杂度,以及⽤于定位和
访问其中个别元素的标记等⽅⾯有所不同。
数据类型
R语⾔中的数据类型主要包括数值型(numeric)、逻辑型(logical)、⽇期型(date)、字符型(character)、复数型(complex)、原味性
(raw⼆进制形式保存数据)。此外可能是缺省值(NA)和空值(NULL)。其中最常⽤的4种类型分别是数值型、逻辑型、⽇期型、字符型。
对象种存储的数据类型可以使⽤
mode()
函数进⾏查看判别和转换数据对象类型的函数
数据类型
数值型(numeric)
字符型(character)
逻辑型(logical)
整数型(integer)
复数型(complex)空值(NULL)
判别函数
c()
ter()
l()
r()
x()()
转换函数
c()
ter()
l()
r()
x()()
R语⾔数据对象的基本属性是长度和类型属性,可使⽤
length()
函数读取对象的长度,通过
mode()函数读取对象的类型。
向量vector
R语⾔最基础的数据对象是向量,向量是以⼀维数组的⽅式管理数据。
多数情况下都会使⽤长度⼤于1的向量,可使⽤
c()
函数(combine合并)和对应参数来创建⼀个向量。
向量的数据类型可以是字符型、逻辑型(TRUE/T、FALSE/F)、数值型、复数型。
向量的长度是含有元素的个数,可使⽤
length()函数进⾏读取。
例如:创建数值型向量
>(v<-c(1,2,3,4,5,6,7))
[1]1234567
>mode(v)
[1]"numeric"
>length(v)[1]7
例如:创建字符型向量
>(v=c("hello","world"))
[1]"hello""world"
>mode(v)
[1]"character"
>length(v)[1]2
例如:创建逻辑型向量
>(v<-c(TRUE,FALSE,T,F))
[1]TRUEFALSETRUEFALSE
>mode(v)
[1]"logical"
>length(v)[1]4
向量的元素必须具有相同数据类型,若不是则会强⾏执⾏类型转换。例如:数值型+字符型=字符串
>v1=c(1,2,3)
>v2=c("a","b","c")
>v=c(v1,v2)>v
[1]"1""2""3""a""b""c"
>mode(v)
[1]"character"
>length(v)[1]6
例如:数值型+逻辑型=数值型
>v1=c(1,2,3)
>v2=c(T,F,T)
>v=c(v1,v2)>v
[1]123101
>mode(v)
[1]"numeric"
>length(v)[1]6
例如:字符型+逻辑型=字符型
>v1=c("a","b","c")
>v2=c(T,T,F)>v=c(v1,v2)
>v
[1]"a""b""c""TRUE""TRUE"
[6]"FALSE"
>mode(v)
[1]"character"
>length(v)[1]6
向量运算
R语⾔是⽮量化语⾔,其中最强⼤之⼀的函数的向量化,意味着操作会⾃动应⽤于向量的每个元素,⽽⽆需遍历。例如:创建1~10序列组成的向量,对向量种每个元素进⾏开⽅根。
>v=q(1:10)
>(round(sqrt(v),2))
[1]1.001.411.732.002.242.452.652.833.003.16
向量的四则运算
例如:向量相加
>rm(list=ls())
>v1=c(1,2,3)
>v2=c(1.1,2.2,3.3)
>(v1+v2)[1]2.14.26.3
如果向量的长度不同则R语⾔会利⽤循环规则重复较短的向量元素,直到得到向量长度于较长向量的长度相同。
>rm(list=ls())
>(v1<-c(1,2,3,4,5,6,7))
[1]1234567
>(v2<-c(10,20))[1]1020
>(v<-v1+v2)
[1]617
Warningmessage:Inv1+v2:
lo高中论语十二章 ngerobjectlengthisnotamultipleofshorterobjectlength
警告:长对象的长度不是短对象长度的整数倍
⽣成数列
R语⾔中使⽤冒号
:
⾃动⽣成增量为1或-1的数列例如:⽣成1到10增量为1的等差数列
>rm(list=ls())>1:10
[1]
例如:⽣成10到1增量为-1的等差数列
>10:1
[1]1
对于增量不为1的数列可使⽤
q()序列函数⽣成
q(from=1,to=1,by=((to-from)/(-1)),=NULL,=NULL,...)
参数
from
to
等差数列的⾸项数值,默认为1。
等差数列的尾项数值,默认为1。等差数值
产⽣向量的长度,可简写为len
描述
如果只给出⾸项和尾项数据则等差数值by将⾃动匹配为1或-1
>q(1,10)
[1]>q(10,1)
[1]1>q(0,-10)
[1]0-1-2-3-4-5-6-7-8-9-10
如果给出⾸项和尾项以及长度则会⾃动计算等差数值
>q(1,10,=5)
[1]1.00北京的春节习俗 3.255.507.7510.00
>q(1,10,=4)[1]14710
如果给出⾸项和等差数值和长度则会⾃动计算尾项
>q(1,by=2,=10)[1]1719
重复数列
R语⾔中的
rep()函数为重复函数可将向量重复若⼲次
rep(x,time=1,each=1,=1)
参数
x
times
预重复的序列重复次数
设置向量元素先重复的次数设置重复数列的长度,可简写为len
描述
>rep(1:3)
[1]123
>rep(1:3,times=2)[1]123123
>rep(1:3,each=2)
[1]112233
>rep(1:3,c(2,1,2))[1]11233
>rep(1:3,times=2,len=4)[1]1231
如果设置的长度⼤于数列长度则会以循环补齐的⽅式补全
>rep(1:3,times=2,len=8)[1]12312312
字母序列
R语⾔中的letters和LETTERS函数可⽤于⽣成26个英⽂字母的⼩写和⼤写字符序列
>letters
[1]"a""b""c""d""e""f""g""h""i""j""k""l""m""n"[15]"o""p""q""r""s""t""u""v""w""x""y""z"
>LETTERS
[1]"A""B""C""D""E""F""G""H""I""J""K""L""M""N"[15]"O""P""Q""R""S""T""U""V""W""X""Y""Z"
向量索引
R语⾔中若需要访问向量中部分或个别元素可通过在向量名称后跟⽅括号
[]
中添加向量索引的⽅式来实现。向量的初始位置为1
向量索引会根据元素在向量中的位置挑选中元素
向量索引为负数表⽰排除向量中相应位置的元素并返回其它位置的元素
可使⽤向量索引来选择多个元素
可使⽤逻辑向量条件选择元素可使⽤表达式选择元素
例如:从5个随机数中挑选出位置为1,3,5的三个元素
>rm(list=ls())
>(1234)
>x=rnorm(5)>x
[1]-1.20706570.27742921.0844412-2.34569770.4291247>x[c(1,3,5)]
[1]-1.20706571.08444120.4291247
例如:从5个随机数中删除第1、第2、第3个
>rm(list=ls())
>(1234)>(x=rnorm(5))
[1]-1.20706570.27742921.0844412-2.34569770.4291247>x[c(-1,-2,-3)]
[1]-2.34569770.4291247
例如:保留⾸位删除中间
>rm(list=ls())>(1234)
>(x=rnorm(5))
[1]-1.20706570.27742921.0844412-2.34569770.4291247>x[c(T,F,F,F,T)]
[1]-1.20706570.4291247
禁⽌混合使⽤正负值
>rm(list=ls())>(1234)
>(v=rnorm(5))
[1]-1.20706570.27742921.0844412-2.34569770.4291247>v[c(1,-2)]
Errorinv[c(1,-2)]:only0'smaybemixedwithnegativesubscripts
例如:提取所有整数的元素
>rm(list=ls())
>(1234)>(v=rnorm(5))
[1]-1.20706570.27742921.0844412-2.34569770.4291247>v>0
[1]FALSETRUETRUEFALSETRUE>v[v>0]
[1]0.27742921.08444120.4291247
R语⾔中的
which()
函数将返回逻辑向量中为真的位置例如:找出向量中⼤于50的元素的索引位置
sample()
函数⽤于对序列继续宁⽆放回随机抽取多个元素组成向量
which()
函数⽤于从逻辑向量中获取条件为真的元素的索引位置
()
函数⽤于从逻辑向量中获取元素最⼩值的索引位置
()函数⽤于从逻辑向量中获取元素最⼤值的索引位置
>rm(list=ls())
>(1234)
>(v=sample(1:100,10))
[1]28890
>which(v>50)
[1]2910
>(v)[1]8
>(v)[1]10
矩阵maxtrix
R语⾔中利⽤矩阵
matrix
描述⼆维数组,矩阵和向量相似,其内部元素可以是实数、复数、字符、逻辑值等数据。
矩阵
matrix
使⽤两个下标来访问元素,⽐如
m[i,j]表⽰矩阵m中第i⾏第j列的数据。
R语⾔中使⽤
matrix()
函数以向量形式输⼊矩阵中的元素,使⽤
ncol
和
nrow属性设置矩阵的列数和⾏数,从⽽创建⼀个矩阵。
>rm(list=ls())>(1234)
>(v=sample(1:100,16))
[1]4648341
>(m=matrix(v,nrow=4,ncol=4))
[,1][,2][,3][,4]
[1,]484596
[2,]100566648
[3,]2167473[4,]40939741
默认举证是按列填充,若需按⾏填充则需设置
byrow参数为真。
>(v=q(1:10))
[1]
>(m=matrix(v,ncol=5,nrow=2,byrow=T))
[,1][,2][,3][,4][,5]
[1,]12345[2,]678910
数组array
R语⾔中利⽤
array
描述多维数组,多维数组有⼀个特征属性叫做dim维数向量,dim维数向量的长度是多维数组的维数,dim内的元素对应维度的长度。矩阵只是数组的特殊情况,因为它只具有两个维度。
本文发布于:2023-04-14 01:05:10,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/fan/90/93198.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |