【精选】R入门实例详解

您所在的位置:网站首页 r语言代码实例 【精选】R入门实例详解

【精选】R入门实例详解

2023-10-25 01:39| 来源: 网络整理| 查看: 265

R语言详解 安装数据类型向量(vector)冒号运算符等差与重复NA与NULL向量比较 字符串数组矩阵列表数据框因子和表运算符全局变量 输入与输出读写文件 控制语句循环分支函数 函数自定义函数常用函数排序apply()函数 数学运算与模拟数学函数统计分布函数 绘图

安装

刚入门R语言下这俩东西,R(R语言版本)和RStudio(R编译平台) R:R RStudio:Rstudio 详细安装过程

R一门统计学软件 R语言是一门面向对象的编程语言

程序语句由换行符或者分号分隔; R语言比较像python,语句格式跟py很像,语句后不用分号,需缩进;for循环、if判断后用{},不用:(冒号); R是一种块状结构程序语言。块由大括号划分。

R语言不需要“声明”变量。 R语言处理对象是向量,频繁调用数据库

单行注释:#注释 多行注释:R不提供多行注释 代替方法:RStudio选中需要注释的代码,快捷键Ctrl+Shift+C

RStdio批量模式运行需要把代码都选中,再点运行 help(),获取在线帮助,等价于? example(),展示例子

getwd(),返回当前目录 setwd(),指定目录

cat(x,sep=" "),输出,print()也可以,不过这个没有转义字符,即没法换行。sep和seq都一样。

数据类型

R语言不需要声明变量,直接赋值即可。

R语言允许使用FURE和FALSE缩写为T和F 在R语言中,TRUE和FALSE是保留字,表示逻辑常量,而T和F是全局变量,其初始值设置为这些。 在需要数值的上下文中,逻辑向量被强制为整数向量,TRUE映射到1L, FALSE映射到0L, NA映射到NA_integer_。 查看logical文档:help("logical")

typeof() #查看数据类型 #integer #整型 #double #小数(浮点型)(默认为双精度) #character #字符串类型 #logical #逻辑型,T、F mode() #查看数据结构 #numeric #数值向量,数值类型,包括整数,小数,科学计数的方式 #character #字符串向量 #list #列表 #矩阵也是数向量的一种 #matrix(矩阵) #array(数组)

R语言中class()与mode()区别

向量(vector)

向量类型是R语言核心,一切类型都可称为向量,一个数(标量),也是一个有一个元素的向量,R语言的数据类型里没有标量

R语言中的变量类型被称为模式(mode)R语言的向量索引从1开始R语言调用函数typeof(x)查看变量x的类型

R语言数值变量不指明的一般都是双精度“double”类型,冒号运算符":"生成的是整型、c()生成的是浮点数double

向量中允许元素重复

向量插入和删除需要重新给向量赋值(R中向量是连续存储的) length(),获取向量长度

#赋值: > x x[1] [1] 3 #x也是一个向量,只有一个元素 #向量 a a[2] [1] 3 #下标从1开始,不是从0 > a[2:4] [1] 3 5 7 #下标从第2到第4 > a[c(1,3,4)] #指定第1,3,4位置 [1] 1 5 7 #改变向量,重新赋值 > a a [1] 1 3 5 66 18 #mean()求向量均值 mean(x) #hist()绘制直方图 冒号运算符

冒号运算符生成的是向量 ?Syntax,运算符优先级详细说明,其中冒号运算符优先级最高 冒号运算符生成的数值是整数类型

> 6:1 #冒号运算符,步长为1 [1] 6 5 4 3 2 1 > 1:5/2 #冒号优先级最高 [1] 0.5 1.0 1.5 2.0 2.5 > 1:5+1 [1] 2 3 4 5 6

向量运算 向量加、减、乘、除,对应元素直接相加(格式相等) 单个向量x与向量A加减乘除,向量A的每个元素分别对应x运算

索引,下标从1开始 负索引把相应的元素删除

> li a [1,] 1 1 [2,] 3 1 [3,] 5 1 [4,] 66 1 [5,] 18 1 > li + c(1,2) #循环补齐 a [1,] 2 3 [2,] 5 2 [3,] 6 3 [4,] 68 2 [5,] 19 3 #等价于: > li + array(c(1,2),dim(li)) a [1,] 2 3 [2,] 5 2 [3,] 6 3 [4,] 68 2 [5,] 19 3 > b b [1] 1 2 3 4 5 6 7 8 9 > b[-2:-4] #把下标从2到4的元素删除 [1] 1 5 6 7 8 9 #R语言索引都是闭区间

若某运算要求向量(数组)具有相同的长度,R会自动循环补齐,即重复较短的向量,直到与另一个相匹配

等差与重复

seq(),生成等差向量 seq(from, to, by, length, along.with)

from,to 序列的起始值和(最大)结束值。 by 步长 length/length.out 序列的期望长度。一个非负数,对于seq和seq.int,如果是小数则将其四舍五入。 along.with 从这个参数的长度中取长度。 > seq(1, 6, by = 3) [1] 1 4 > seq(0, 1, length.out = 11) [1] 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0

req(),生成重复向量

> rep(c(12,34,7),2) #对向量整体重复 [1] 12 34 7 12 34 7 > rep(c(1,12,13),each=2) #分别先对向量中每个元素重复,each指重复次数 [1] 1 1 12 12 13 13 > c(1:4,rep(c(1,0),each=2),rep(c(1,0),2)) [1] 1 2 3 4 1 1 0 0 1 0 1 0 NA与NULL

NA表示缺失值 NULL表示不存在的值,没有模式 若要运算中跳过NA值,na.rm=T

> x x [1] 3 NA 8 123 5 > mean(x) [1] NA > mean(x,na.rm=T) [1] 34.75 > x mean(x) #运算中NULL会自动被过滤 [1] 34.75

subset(),筛选过程中移除NA

向量比较

all(),参数中都为真,返回True any(),参数中只要有一个为真,则返回True

identical(x,y),函数判断两个对象是否完全一致

> x y x == y #"=="是一个向量化函数,返回值为一个布尔值的向量 [1] TRUE TRUE TRUE > all(x==y) #两个向量中元素值相等,返回值TRUE [1] TRUE > identical(x,y) #两个对象完全一致 [1] FALSE

看个例子: 在这里插入图片描述 n-k+1,每次循环k个值,到最后k个值的第一个位置 [1:(i+k-1)],k个值,不要忘记了括号(冒号优先级高)

字符串

字符串是实际上是字符模式的单元素向量,默认用双引号"",赋值时用单引号也行。 R语言中字符串包含字符,说是一个字符是字符串也可。

> st = 'my gril' > st [1] "my gril" > mode(st) > [1] "character" #字符串向量 #只要向量中有一个是字符串,这个向量就是字符串向量 > ch = c('a',o,9,'45') Error: object 'o' not found > ch = c('a','one',9,'45') > ch [1] "a" "one" "9" "45" > mode(ch) [1] "character" > length(ch) [1] 4 #可以用character()函数构造初始字符型向量 > character(length=5) [1] "" "" "" "" ""

字符串函数操作 获取字符串长度:nchar() 字符串分割:strsplit() 字符串拼接:paste() 字符串截取:substr() 字符串替代:gsub(), chartr(), sub() 字符串匹配:grep() 字符串格式化:sprintf() 大小写替换:toupper(), tolower()

1、获取字符串长度,nchar()

> a nchar(a) > fruit nchar(fruit) [1] 5 6 5 6 > length(fruit) #注意跟length()是有区别的 [1] 4

2、字符串分割,strsplit() strsplit()函数:将字符型向量分解成多个字符串,返回值为列表。 unlist()函数:将列表转换成向量。

> a strsplit(a," ") [[1]] [1] "apple" "orange" "grape" "banana" > strsplit(a,split = " " ) #带不带split=都一样 [[1]] [1] "apple" "orange" "grape" "banana" > unlist(strsplit(a," ")) #将列表转化为向量 [1] "apple" "orange" "grape" "banana"

3、字符串拼接 paste()函数:将多个对象(如向量)“粘贴”在一起,返回成单独的字符串。其优点在于,就算有的处理对象不是字符型也能自动转为字符型。 在这里插入图片描述 在这里插入图片描述

4、字符串截取,substr()

substr(x, start, stop) substring(text, first, last = 1000000L) substr()函数和substring()函数是截取字符串最常用的函数,两个函数功能方面是一样的。

substr()函数:必须设置参数start和stop,如果缺少将出错。 substring()函数:可以只设置first参数,last参数若不设置,则默认为1000000L,通常是指字符串的最大长度。

substr()函数:对给定的一个字符串执行一次求子串操作 substring()函数:对给定的一个字符串执行给定次求子串操作

> substr("abcdef",2,4) [1] "bcd" > substring("abcdef",2,4) [1] "bcd" > substr("abcdef",1:6,1:6) [1] "a" > substring("abcdef",1:6,1:6) #substring()执行给定次求子串 [1] "a" "b" "c" "d" "e" "f" > substr("abcdef",1:6,6) [1] "abcdef" > substring("abcdef",1:6,6) [1] "abcdef" "bcdef" "cdef" "def" "ef" "f"

在这里插入图片描述

5、字符串匹配,grep() grep(pattern, x),在字符串向量x里捜索给定子字符串pattern 如果x有n个元素,则grep(pattern,x)会返回一个长度不超过n的向量。这个向量的每个元素是x的索引,表示在索引对应的元素x[i]中有与pattern匹配的子字符串。

> grep("Pole",c("Equator","North Pole","South Pole")) [1] 2 3 > grep("pole",c("Equator","North Pole","South Pole")) #小写p(ploe) integer(0)

正则化表达式 正则表达式是一种通配符,它是用来描述一系列字符串的简略表达式。例如,表达式"[au]"表示的是含有字母a或u的字符串。 英文句点.表任意一个字符,使用两个反斜线取消.全匹配作用

> grep("[au]",c("Equator","North Pole","South Pole")) [1] 1 3 > grep(".",c("abc","de","f.g")) #英文句点.表任意一个字符 [1] 1 2 3 > grep("\\.",c("abc","de","f.g")) #使用两个反斜线取消.全匹配作用 [1] 3 > grep("o.e",c("Equator","North Pole","South Pole")) [1] 2 3 > grep("N..t",c("Equator","North Pole","South Pole")) [1] 2

regexpr()和gregexpr()匹配 regexpr(pattern,text)在字符串text中寻找pattern,返回与pattern匹配的第一个子字符串的起始字符位置。返回类型为数值列表 gregexpr(pattern,text)的功能与regexpr()一样,不过它会寻找与pattern匹配的全部子字符串的起始位置。返回类型为列表

> regexpr("uat",c("Equator","UIEopj")) #没有匹配到的返回-1 [1] 3 -1 #匹配的起始位置 attr(,"match.length") [1] 3 -1 #匹配的字符串长度为3 attr(,"index.type") [1] "chars" attr(,"useBytes") [1] TRUE > mode(regexpr("uat",c("Equator","UIEopj"))) [1] "numeric" > a = gregexpr("iss","Mississippi") > a [[1]] [1] 2 5 #匹配的起始位置 attr(,"match.length") [1] 3 3 #匹配的字符串长度为3 attr(,"index.type") [1] "chars" attr(,"useBytes") [1] TRUE > mode(a) [1] "list"

6、字符串格式化,sprintf() sprintf()函数:把若干个字符串或变量按一定格式“打印”到字符串里

> i s s [1] "the square of 8 is 64"

7、大小写替换

> a toupper(a) #全部替换为大写 [1] "HELLO WORLD" > tolower(a) #全部替换为小写 [1] "hello world 数组

array array(data = NA, dim = length(data), dimnames = NULL) dim:每个维度最大索引 dimnames:可以是NULL,也可以是维度的名称。这必须是一个列表。

> array(1:3, c(2,4)) [,1] [,2] [,3] [,4] [1,] 1 3 2 1 [2,] 2 1 3 2 矩阵

矩阵有行和列,二维向量,是一种特殊的数组,数组可以是多维的,矩阵只有行和列两维,一般用matrix生成矩阵,行row,列column

函数matrix()是构造矩阵(二维数组)的函数,其构造形式为: matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL) 其中data是一个向量数据,nrol是矩阵的行数,ncol是矩阵的列数。 当byrow=TRUE时,生成矩阵的数据按行放置,缺省时相当于byrow=FALSE,数据按列放置。 dimname,是数组维的名字,缺省时为空。

a、矩阵的创建:

> matrix(c(1,2,3,4,5,1,2,8),nrow=2) [,1] [,2] [,3] [,4] [1,] 1 3 5 2 [2,] 2 4 1 8 > rbind(c(1,5),c(2,7)) #按行绑定 [,1] [,2] [1,] 1 5 [2,] 2 7 > cbind(c(1,2),c(5,7)) #按列绑定 [,1] [,2] [1,] 1 5 [2,] 2 7

b、给行列取名:

> mat mat c1 c2 c3 r1 1 4 7 r2 2 5 8 r3 3 6 9 > mat2 mat2 [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 > rownames(mat2) colnames(mat2) mat2 a b c d 1 1 4 7 10 2 2 5 8 11 3 3 6 9 12 #可以通过rbind,cbind添加行列 > rbind(mat, c(12, 13, 14)) #在原矩阵mat后面添加一行 > rbind(mat, c(12, 13, 14)) c1 c2 c3 r1 1 4 7 r2 2 5 8 r3 3 6 9 12 13 14

t(),矩阵转置 det(),求方阵的行列式 dim(),矩阵的行列数 两个矩阵直接相乘A * B,对应元素相乘(矩阵必须相似) 矩阵乘法:mat %*% mat

**向量内积** A %*% B **向量外积(叉积)** A %o% B outer()是更为强大的外积运算函数,outer(x,y)计算向量二与y的外积,它等价于A %o% B 函数。outer()的一般调用格式为 outer(A,B,fun=”*”) 其中A,B矩阵(或向量),fun是作外积运算函数,缺省值为乘法运算。函数outer()在绘制三维曲面时非常有用,它可生成一个x和y的网格。

c、矩阵运算

> m m [,1] [,2] [1,] 1 5 [2,] 2 6 > c = cbind(c(1,5),c(2,6)) > c [,1] [,2] [1,] 1 2 [2,] 5 6 #矩阵直接相乘* > m * c [,1] [,2] [1,] 1 10 [2,] 10 36 #矩阵内积c > m %*% c [,1] [,2] [1,] 26 32 [2,] 32 40 #矩阵外积 > m %o% c , , 1, 1 [,1] [,2] [1,] 1 5 [2,] 2 6 , , 2, 1 [,1] [,2] [1,] 5 25 [2,] 10 30 , , 1, 2 [,1] [,2] [1,] 2 10 [2,] 4 12 , , 2, 2 [,1] [,2] [1,] 6 30 [2,] 12 36 >mc dim(mc) [1] 2 2 2 2 #dim(mc) = c(dim(m), dim(c)) #注意维数

矩阵相关函数在这里插入图片描述

1)drop函数避免矩阵降为 在这里插入图片描述

2)向量转化为矩阵 在这里插入图片描述

3)apply()函数 在这里插入图片描述

列表

从技术上讲还是向量,不过是递归型向量 列表中各项可以是不同的数据类型

a、列表创建list()

> li li $a [1] 55 $b [1] "34" $c [1] 3 5 > li$a #使用$加标签访问元素 [1] 55 > li2 li2 [[1]] [1] 55 [[2]] [1] "34" [[3]] [1] 3 5

b、列表索引 在这里插入图片描述 使用names()获取列表的标签 使用unlist()获取列表的值,返回值是一个向量。

#继承上面的变量(li,li2) > unlist(li) #li带有标签 a b c1 c2 "55" "34" "3" "5" > class(unlist(li)) #li列表中有字符串,返回字符型向量 [1] "character" > unlist(li2) [1] "55" "34" "3" "5"

c、列表增删 在这里插入图片描述

数据框

R语言中的数据框可视为二维列表 数据框每列是一个变量,每行是一个观测 数据框通常通过读取文件或数据库来创建

在R语言中,数据框使用data.frame()函数来创建,其格式如下:

data.frame(col1, col2, ..., row.name=NULL, check.rows = FALSE, check.names=TRUE, stringsAsFactors = default.stringsAsFactors()) 其中,row.name用于指定各行(样本)的名称,默认没有名称,使用从1开始自增的序列来标识每一行; check.rows用于用来检查行的名称和数量是否一致,默认为FALSE; check.names来检查变量(列)的名称是否唯一且符合语法,默认为TRUE; 用来描述是否将字符型向量自动转换为因子,默认转换,若不改变的话使用stringsAsFactors = FALSE来指定即可。 可以使用rbind()函数和cbind()函数将新行或新列添加到数据框变量中。遵循循环补齐 > arr1 = array(1:12,c(3,4)) > arr1 [,1] [,2] [,3] [,4] [1,] 1 4 7 10 [2,] 2 5 8 11 [3,] 3 6 9 12 > mode(arr1) [1] "numeric" > data.frame(arr1) X1 X2 X3 X4 1 1 4 7 10 2 2 5 8 11 3 3 6 9 12 > mode(data.frame(arr1)) [1] "list" > df1 df1 lis df2 lis2 df2 df2 name sex score 1 张三 男 90 2 四姐 女 85 3 王五 男 82 4 小七 男 93 5 八哥 男 92 > lis3 df2 df2 name sex score height 1 张三 男 90 170 2 四姐 女 85 168 3 王五 男 82 185 4 小七 男 93 178 5 八哥 男 92 175

访问数据框: 在这里插入图片描述

缺失值处理: complete.cases() 在这里插入图片描述

合并数据框: merge(x,y) 在这里插入图片描述 在这里插入图片描述

因子和表

因子(factor)是R语言中很多强大运算的基础,包括许多针对表格数据的运算。 因子的设计思想来源于统计学中的名义变量,或称之为分类变量。这种变量的值本质上不是数字,而是分类。尽管可以用数字对它们编码。例如,党员用1表示,团员用0表示;男生用1表示,女生用0表示等。

因子与水平: 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

table(),统计因子向量中各水平出现的频数 在这里插入图片描述

运算符

在这里插入图片描述 x && y,返回标量 x & y,返回向量

> x y x & y #返回一个向量 [1] TRUE FALSE FALSE > x[1] && y[1] #返回T or F [1] TRUE > x && y #赶回T or F [1] TRUE

创建自己的二元运算符 在这里插入图片描述

全局变量

cat(x,"abc","de\n",sep="\n") 1 2 3 abc de #这有一个空格 > cat(x,"abc","de\n",sep="") 123abcde 读写文件

getwd(),获取代码文件执行目录 setwd(dir),设置代码文件执行路径 file.info(),查看文件详细信息 file.exists(),判断当前路径下是否存在文件 dir(),获取当前路径下文件 read.table(),读入数据框(表)

从文件中读取数据框或矩阵 在这里插入图片描述

读excel表格或csv文件 安装运行读取Excel文件的包readxl:library("readxl") read_excel(path,sheel=1) read.csv(path,header=TRUE)

读取文本文件函数readLines()

# z.txt name age John 25 Mary 28 Jim 19 > v v [1] "name age" "John 25" "Mary 28" "Jim 19" > class(v) #字符串向量 [1] "character" #利用readLines()函数逐行读取文件中的内容 > v readLines(v,n=1) [1] "name age" > readLines(v,n=1) [1] "John 25" > readLines(v,n=1) [1] "Mary 28" > readLines(v,n=1) [1] "Jim 19" > readLines(v,n=1) character(0) #利用seek()函数实现“倒带”功能:从文件开始处重新读取文件 # where=0参数表示从文件开头读文件 > v readLines(v,n=2) [1] "name age" "John 25" > seek(con=v,where=0) [1] 36 > readLines(v,n=1) #上一步seek(0),从起点开始 [1] "name age"

写文件 由于R语言主要用于统计功能,读文件可能比写文件更为常用; write.table()函数的用法与read.table()非常相似,把数据框写入文件。 在这里插入图片描述

函数cat()可以用来写入文件,一次写入一部分 在这里插入图片描述

用函数writeLines()写入文件 在这里插入图片描述

控制语句 循环

for(i in x),x是一个向量 while() repeat() 在这里插入图片描述

分支函数

if/else switch

向量化的ifelse()函数 ifelse(test, yes, no) text,可以强制转换为逻辑模式的对象。 yes,返回test的真元素的值。 no,返回test的假元素的值。

> x y 0, x+1, x-1) > y [1] 4

switch(EXPR, ...) EXPR:求值为数字或字符串的表达式。 在这里插入图片描述 在这里插入图片描述

函数

f sum = sum + i #没有sum+=i } return(sum) }

返回值 可以显式调用函数return(),把一个值返回给主调函数,如果不使用这条语句,默认将会把最后执行的语句作为返回值。不推荐使用return(),因为调用这个函数会延长执行时间。 在这里插入图片描述 默认参数 在这里插入图片描述

source(),导入函数或库 在这里插入图片描述

匿名函数 在这里插入图片描述

常用函数 排序

在这里插入图片描述

apply()函数

apply()常用于矩阵,相当于函数映射,比较常用。 apply(m,dimcode,f,fargs)

m表示矩阵 dimcode,取1表示对行应用函数f(默认),取2表对列 f是函数,f可以是内置函数,也可是自定义函数 fargs是f的可选参数集 > z [,1] [,2] [,3] [1,] 2 6 10 [2,] 4 8 12 > apply(z,2,mean) #对矩阵z按列取平均数 [1] 3 7 11

lapply()函数 lapply()和apply()的区别在于输出的格式,lapply()的输出是一个列表(list),不需要dimcode参数。 lapply(m, fargs)

sapply()函数 sapply()函数做的事情和lapply()一样,返回的是一个向量(vector)使得对解读更加友好,其使用方法和lapply一样,不过多了两个参数: simplify&use.NAMEs: simplify = T可以将输出结果数组化,如果设置为false,sapply()函数就和lapply()函数没有差别了; use.NAMEs = T可以设置字符串为字符名。

tapply()函数 对一个向量里面进行分组统计操作 tapply(X, INDEX, FUN = NULL)

X: 一个对象,一般都是向量INDEX: 一个包含分类因子的列表(list)FUN: 对X里面每个元素进行操作的函数 数学运算与模拟 数学函数

幂用:^ 在这里插入图片描述 计算概率 choose(),生成组合数, C n k = ( k n ) = n ! k ! ( n − k ) ! C^k_n=(^n_k)=\frac{n!}{k!(n-k)!} Cnk​=(kn​)=k!(n−k)!n!​ prod(),连乘函数

累积和cumsum()、累积乘积cumprod() 在这里插入图片描述

函数min()把所有元素组成一个向量,然后返回最小值。 函数pmin()把两个向量对应位置的元素两两比较,返回一个向量。

> z z [,1] [,2] [1,] 1 2 [2,] 5 3 [3,] 6 2 > z[,1] [1] 1 5 6 > z[1,1] [1] 1 > min(z[,1],z[,2]) [1] 1 > pmin(z[,1],z[,2]) [1] 1 3 2

nlm(),求函数极小值点 optimize(),求一元极值的函数

D(),求导 integrate(),微积分 在这里插入图片描述

统计分布函数

在这里插入图片描述

绘图

基本绘图plot()

plot(x, y = NULL, type = "p", xlim = NULL, ylim = NULL, log = "", main = NULL, sub = NULL, xlab = NULL, ylab = NULL, ann = par("ann"), axes = TRUE, frame.plot = axes, panel.first = NULL, panel.last = NULL, asp = NA, xgap.axis = NA, ygap.axis = NA, ...) 参数作用xlim二维向量,表示所绘图形x轴的范围ylim二维向量,表示所绘图形y轴的范围log“x”或“y”,表示对x轴或y轴的数据取对数,“xy”或“yx”,表示对x轴与y轴的数据同时取对数main字符串,描述图形的标题sub字符串,描述图形的副标题xlab字符串,描述x轴的标签,默认值为对象名ylab字符串,描述y轴的标签,默认值为对象名

多图par()

> par(mfrow=c(3,2)) #按行填放3行2列,共计6个图 > par(mfcol=c(3,2)) #按列填放3行2列,共计6个图 > par(mfrow=c(1,1)) #取消多图环境 > x y par(mfrow=c(2,4)) #按行填放2行4列,共计8个图 > plot(x,y,type="p",col="red",xlab="线型p",ylab="") > plot(x,y,type="l",col="blue",xlab="线型l",ylab="") > plot(x,y,type="o",col="black",xlab="线型o",ylab="") > plot(x,y,type="b",col="green",xlab="线型b",ylab="") > plot(x,y,type="c",col="red",xlab="线型c",ylab="") > plot(x,y,type="s",col="blue",xlab="线型s",ylab="") > plot(x,y,type="S",col="black",xlab="线型S",ylab="") > plot(x,y,type="h",col="green",xlab="线型h",ylab="")

在这里插入图片描述

选项作用“p”绘点,“l”画线,“b”同时绘点和画线,而线不穿过点,“c”仅画参数“b”所示的线,“o”同时绘点和画线,且线穿过,“h”绘出点到横轴的竖线,“s”绘出阶梯图(先横再纵),“S”绘出阶梯图(先纵再横),“n”作一幅空图,不绘任何图形。

添加点points() 先执行plot函数后,points函数才会生效。 后出现的绘图命令的坐标范围要比先出现的小,否则R环境会截断不显示。

> par(mfrow=c(1,2)) > x y plot(x,y) > x y points(x,y,pch="+") #添加点,先执行plot函数后,points函数才会生效。 > text(locator(1),"HPU") #添加文字text()与精确定位locator() #在单击的位置绘制HPU > text(locator(1),"HPU",cex=3) #改变字符大小:cex选项

运行结果: 在这里插入图片描述

添加线条abline() 在这里插入图片描述

添加多边形polygon()

> par(mfrow=c(1,2)) > f curve(f,0,2) #在区间[0,2]内绘制函数f > polygon(c(1.2,1.4,1.4,1.2),c(0,0,f(1.3),f(1.3)),col="yellow")

在这里插入图片描述

箱线图boxplot() 箱线图不仅可用于反映一组数据分布的特征,比如,分布是否对称,是否存在离群点(outlier)等,还可以对多组数据的分布特征进比较。 在这里插入图片描述

par(mfrow=c(3,1),mai=c(0.4,0.2,0.3,0.2)) x


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3