一
帮助函数
函数 | 功能 |
---|---|
help.start() | 打开帮助文档 |
help(“foo”)或?foo | 打开函数foo的帮助(引号可以省略) |
help.search(“foo”)或??foo | 以 foo 为关键词搜索本地帮助文档 |
example(“foo”) | 函数 foo 的使用示例(引号可以省略) |
RSiteSearch(“foo”) | 以 foo 为关键词搜索在线文档和邮件列表存档 |
apropos(“foo”, mode=“function”) | 列出名称中含有 foo 的所有可用函数 |
data() | 列出当前已加载包中所含的所有可用示例数据集 |
vignette() | 列出当前已安装包中所有可用的 vignette文档 |
vignette(“foo”) | 为主题 foo 显示指定的 vignette文档 |
包
- 网址:http://cran.r-project.org/ web/packages
- 安装:install.packages()
- 载入包:library()
- 包的简短描述以及函数:help(package=“package_name”)
包 | 用途 | 链接 |
---|---|---|
lme4 | [[GLMM]] | R语言,GLMM 模型 ,lme4包中的 lmer()的使用_r语言lmer函数_Clark Kent 2000的博客-CSDN博客 |
lamle | 潜在变量模型的最大似然估计 | ![[R-包-lamle.png]] ## 变量 |
- 种类:
- 名义型变量:无顺序区别,相互独立
- 有序型变量:有顺序关系,但是又不是连续的(优秀、良好、及格、不及格)
- 连续型变量:某个范围内的任意值
创建数据集
数据集概念
rownames(行名):实例标识符
因子(factors):类别型(包括名义型和有序型)变量、
数据集结构
- 对象(object)是指可以赋值给变量的任何事物
- 模式,描述了此对象是如何存储的
- 类,像print这样的泛型函数表明如何处理此对象
- 数据框:用于存储数据的一种结构
- 列:变量
- 行:观测
因子(factor),名义型变量或有序型变量
[[变量]]
- 定义:在R中名义型变量和有序性变量称为因子,factor。。这些分类变量的可能值称为一个水平,level,例如good,better,best,都称为一个level。由这些水平值构成的向量就成为因子
- 作用:分类计算频数之类
- 应用:
- 计算频数
- 独立性检验
- 相关性检验
- 方差分析
- 主成分分析
- 因子分析
title: 创建因子
~~~R
f<-factor("red","red","green","blue")
week<-factor(c("Mon","Fri","Thu","Web","Mon","Fri","Sun"),order=T,levels = c("Mon","Tue","Web","Thu","Fri","Sat","Sun"))#创建因子顺序
feyl<-factor(mtcars$cyl)#定义向量为因子
> plot(mtcars$cyl)#向量输出散点图
> plot(factor(mtcars$cyl))#输出条形图
向量
- 定义 :存储数值型、字符型或逻辑型数据的一维数组
- 函数:
- a<- c(1,2,4,6,-4)数值型向量
- b<-c(“h”,“j”,“k”)是字符型向量
- c<-c(TRUE,FALSE,TRUE)是逻辑型向量(可以简写为c<-c(TRUE,F,T))
- 同一向量无法混杂不同模式的数据
- 标量:只含一个元素的向量(保存常量)
- 示例:f<- 3
- 访问元素[]括号里是位置(第一个元素位置是1不是0)
-
a <- c(“k”, “j”, “h”, “a”, “c”, “m”)
-
a[3]
- “h”
- 生成数据序列:a[2:5]
-
- 使用冒号(:)快捷建立向量
- ![[R-快捷建立向量.png]]
- 设置等差向量seq(from=起始数字,to=结束数字,by=等差值,length.out=输出个数)
- 重复向量?rep
title:向量的重复
~~~R
>rep(2,5)#将2重复五次
[1] 2 2 2 2 2
> x
[1] 1 2 3 4 5
> rep(x,4)#将x重复四次
[1] 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
> rep(x,each=2)#将x的每个元素重复两次
[1] 1 1 2 2 3 3 4 4 5 5
> rep(x,each=2,time=4)#将x中的每个元素重复两次,并将这种重复重复四次
[1] 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5 1 1 2 2 3 3 4 4 5 5
~~~
title: 联系命令
~~~R
> a=1
>b=2
>c=3
> a;b;c#;将多个命令联系在一起
[1] 1
[1] 2
[1] 3
~~~
向量的索引
title: 向量的索引(三种方法)
```ad-R
title: 使用位置进行索引
~~~R
> x<-c(1:10)
> x[1]#R语言脚标从1开始
[1] 1
> x[-4]#删除第四位元素
[1] 1 2 3 5 6 7 8 9 10
> x[c(1:3)]#向量索引,访问1-3位置的元素
[1] 1 2 3<br>
> x[1:3]#访问1-3位置的元素
[1] 1 2 3
> x[c(1,3,-5)]#一方面要求输出1、3位置的值,又要求输出除了位置5以外的所有值,报错
Error in x[c(1, 3, -5)] : only 0#'s may be mixed with negative subscripts
> x[1,3,-5]
Error in x[1, 3, -5] : incorrect number of dimensions
~~~
```ad-R
title:使用逻辑值进行索引
~~~R
> x[c(TRUE,T,T,F,F,T,T,F,F,T)]#访问对应逻辑值为TRUE的元素
[1] 1 2 3 6 7 10
> x[c(T)]#逻辑值可以循环使用
[1] 1 2 3 4 5 6 7 8 9 10
> x[c(T,F)]
[1] 1 3 5 7 9
> X[C(T,T,F)]
Error in `contrasts<-`(`*tmp*`, how.many, value = contr) :
对比只适用于有两个或多于两个层次的因子
> x[C(T,T,F)]#R语言是大小写敏感的语言
Error in `contrasts<-`(`*tmp*`, how.many, value = contr) :
对比只适用于有两个或多于两个层次的因子
> x[c(T,T,F)]#R语言是大小写敏感的语言
[1] 1 2 4 5 7 8 10
> x[c(T,T,T,T,F,F,T,T,F,F,F,T,T,)]#FTT为有逻辑判断但是没有元素
> Error in c(T, T, T, T, F, F, T, T, F, F, F, T, T, ) :
argument 14 is empty
> x[c(T,T,T,T,F,F,T,T,F,F,T,T,T,)]#FTT为有逻辑判断但是没有元素<br>
Error in c(T, T, T, T, F, F, T, T, F, F, T, T, T, ) :
argument 14 is empty
> x[c(T,T,T,T,F,F,T,T,F,F,T,T,T)]
[1] 1 2 3 4 7 8 NA NA NA
> x[c(T,T,T,T,F,F,T,T,F,F,F,T,T)]#FTT为有逻辑判断但是没有元素
[1] 1 2 3 4 7 8 NA NA
> x[c(T,T,T,T,F,F,T,T,F,F,T,T,T)]#TTT为有逻辑判断但是没有元素
[1] 1 2 3 4 7 8 NA NA NA
> x[x>5]#输出大于5的元素
[1] 6 7 8 9 10
> x[x>5 & x<9]#输出大于5,小于9的值
[1] 6 7 8
~~~
```ad-R
title: 使用元素名称访问向量
~~~R
> y<-c("1","3","5","7")
> names(y)
NULL
> names(y)<-c("a","b","c","d")
> y
a b c d
"1" "3" "5" "7"
> names(y)[2]<- "psy"
> y
a psy c d
"1" "3" "5" "7"
> y["a"]
a
"1"
~~~
title: 向量的删减与修改
```ad-R
title: 添加
~~~R
> v<- 1:2 # 定义
> v[c(4,5)]<-7:8# 赋值,由于第3位没有被赋值,所以第三位是NA
> v
[1] 1 2 NA 7 8
> append(x=v,values=99,after=0)# 在0-1位之间/0位之后/起始插入99
[1] 99 1 2 NA 7 8
~~~
```ad-R
title: 删除
~~~R
> y
a psy c d
"1" "3" "5" "7"
> y<-y[-c(1:3)]#删除向量第1-3位元素
> y
d
"7"
~~~
```
```ad-R
title: 修改
~~~R
> y["d"]<-100
> y
d
"100"
~~~
~~~R
> v
[1] 1 NA 7 8
> v[2]
[1] NA
> v[2]<-15
> v
[1] 1 15 7 8
~~~
```
向量的运算
title: 数学运算符
| 优先级 | 符号 | 含义 |
| ------ | ---- | -------- |
| 1 | () | 括号 |
| 2 | ^ | 乘方运算 |
| 3 | \%\% | 整数求余 |
| | %/% | 整除 |
| 4 | * | 乘法 |
| | / | 除法 |
| | + | 加法 |
| 5 | | 减法 |
title: 关系运算符
| 运算符 | 描述 |
| ------ | ------------------------------------------------------------ |
| > | 判断第一个向量的每个元素是否大于第二个向量的相对应元素。 |
| < | 判断第一个向量的每个元素是否小于第二个向量的相对应元素。 |
| == | 判断第一个向量的每个元素是否等于第二个向量的相对应元素。 |
| != | 判断第一个向量的每个元素是否不等于第二个向量的相对应元素。 |
| >= | 判断第一个向量的每个元素是否大于等于第二个向量的相对应元素。 |
| <= | 判断第一个向量的每个元素是否小于等于第二个向量的相对应元素 |
title: 逻辑运算符
| 运算符 | 描述 |
| ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| & | 元素逻辑与运算符,将第一个向量的每个元素与第二个向量的相对应元素进行组合,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。 |
| | | 元素逻辑或运算符,将第一个向量的每个元素与第二个向量的相对应元素进行组合,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。 |
| ! | 逻辑非运算符,返回向量每个元素相反的逻辑值,如果元素为 TRUE 则返回 FALSE,如果元素为 FALSE 则返回 TRUE。 |
| && | 逻辑与运算符,只对两个向量对第一个元素进行判断,如果两个元素都为 TRUE,则结果为 TRUE,否则为 FALSE。 (适用于逻辑向量) |
| \|\| | 逻辑或运算符,只对两个向量对第一个元素进行判断,如果两个元素中有一个为 TRUE,则结果为 TRUE,如果都为 FALSE,则返回 FALSE。(适用于逻辑向量) |
title: 赋值运算符
| 运算符 | 描述 |
| ------ | ---- |
|<− <br> = <br> \<\<−|向左赋值。
|−><br> −>>|向右赋值
title: 其他运算符
| 运算符 | 描述 |
| ------ | ----------------------------------------------------------------------- |
| : | 冒号运算符,用于创建一系列数字的向量。 |
| %in% | 用于判断元素是否在向量里,返回布尔值,有的话返回 TRUE,没有返回 FALSE。(将左边的元素和右边的每个元素进行一一对比) |
| %\*% | 用于矩阵与它转置的矩阵相乘。 |
| 函数 | 说明 |
| -------- | ------------------------------- |
| sqrt(n) | n的平方根 |
| exp(n) | 自然常数e的n次方 |
| log(m,n) | m的对数函数,返回n的几次方等于m |
| log10(m) | 相当于log(m,10) |
title:取整函数
| 名称 | 参数模型 | 含义 |
| ------- | -------- | -------------------------- |
| round | (n) | 对 n 四舍五入取整 |
|^^^| (n, m) | 对 n 保留 m 位小数四舍五入 |
| ceiling | (n) | 对 n 向上取整 |
| floor | (n) | 对 n 向下取整 |
title: 三角函数与反三角函数
| 名称 | 含义 |
| ---- | --- |
| sin | 略 |
| cos | |
| tan | |
| asin | |
| acos | |
| atan | |
title: 正态分布函数
| 名称 | 含义 |
| -------- | ------------ |
| dnorm() | 概率密度函数 |
| qnorm()| 率密度积分函数(从无限小到 x 的积分) |
| qnorm() | 位数函数 |
| rnorm() | 机数函数(常用于概率仿真) |
矩阵
- 定义:二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型,但每个元素必须有相同的模式)
- 函数:matrix()
title:建立矩阵
~~~R
myymatrix <- matrix(vector, nrow=number_of_rows, ncol=number_of_columns,byrow=logical_value, dimnames=list( char_vector_rownames, char_vector_colnames))
# vector包含了矩阵的元素
# nrow和ncol用以指定行和列的维数
# dimnames包含了可选的、以字符型向量表示的行名和列名
# byrow则表明矩阵应当按行填充(byrow=TRUE) 还是按列填充(byrow=FALSE),默认情况下按列填充
title: 建立矩阵
~~~R
> m<-matrix(1:20,4,5)#1-20数字,4行5列
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> mm<-matrix(1:20,nrow = 4,ncol = 6)#数字个数≠行×列,报错
Warning message:
In matrix(1:20, nrow = 4, ncol = 6) :
data length [20] is not a sub-multiple or multiple of the number of columns [6]
> x<-c(1:20)
> x
[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
[16] 16 17 18 19 20
> m<-matrix(x,4,5)#将x中元素排成4行五列
> m
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> print(m<-matrix(x,5))#x排成五行
[,1] [,2] [,3] [,4]
[1,] 1 6 11 16
[2,] 2 7 12 17
[3,] 3 8 13 18
[4,] 4 9 14 19
[5,] 5 10 15 20
> print(m<-matrix(x,4,byrow = T))#x按照行排列
[,1] [,2] [,3] [,4] [,5]
[1,] 1 2 3 4 5
[2,] 6 7 8 9 10
[3,] 11 12 13 14 15
[4,] 16 17 18 19 20
> print(m<-matrix(x,4,byrow = F))#x按照列排列
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> rname<-("R1","R2","R3","R4")
Error: unexpected ',' in "rname<-("R1","
> rname<-c("R1","R2","R3","R4")
> cname<-c("C1","C2","C3","C4","C5")
> dimnames(m)<-list(rname,cname)#为矩阵行和列命名
> m
C1 C2 C3 C4 C5
R1 1 5 9 13 17
R2 2 6 10 14 18
R3 3 7 11 15 19
R4 4 8 12 16 20
title: dim函数
~~~R
> dim(x)#显示向量的维数
NULL
> dim(x)<-c(4,5)#为向量添加维数
> x
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 13 17
[2,] 2 6 10 14 18
[3,] 3 7 11 15 19
[4,] 4 8 12 16 20
> dim(x)<-c(2,2,5)# 三维数组
> x
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
, , 4
[,1] [,2]
[1,] 13 15
[2,] 14 16
, , 5
[,1] [,2]
[1,] 17 19
[2,] 18 20
~~~
### 数组
1. 维度可以大于2
2. 创建函数:array()
1. myarray <- array(vector, dimensions, dimnames)
2. vector包含了数组中的数据
3. dimensions是一个数值型向量,给出了各个维度下标的最大 值
4. dimnames是可选的、各维度名称标签的列表
5. (行,列,维度)
```ad-R
~~~R
> dim(x)<-c(2,2,5)#三维数组,x已被定义为1-20的向量
> x
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
, , 4
[,1] [,2]
[1,] 13 15
[2,] 14 16
, , 5
[,1] [,2]
[1,] 17 19
[2,] 18 20
```
```ad-R
title: 矩阵的运算
| 函数 | 含义 |
| ---- | -------- |
| + | |
| - | |
| % * % |计算外积 |
| * | 计算内积 |
| / | |
| t | 转置矩阵 |
```
### 数据框
1. 定义:
1. 数据框是一种表格式的数据结构。数据框旨在模拟数据集,与其他统计软件例如SAS或者SPSS中的数据集的概念一致。
2. 数据集通常是由数据构成的一个矩形数组,行表示观测,列表示变量。不同的行业对于数据集的行和列叫法不同。
2. 特点
1. 数据框形状上很像矩阵
2. 数据框是比较规则的列表
3. 矩阵必须为同一数据类型
4. 数据框每一列必须同一类型,每一行可以不同
3. 函数:data.frame()
```ad-R
title: 生成数据框
~~~R
mydata <- data.frame(col1, col2, col3,...)#列向量col1、col2、col3等可为任何类型(如字符型、数值型或逻辑型)。每一列的名称可由函数names指定
stats<-data.frame(state.name,state.abb,state.region,state.x77)
```
```ad-R
title:数据框的访问
~~~R
stats[1]#访问数据框的第一列
stats[c(1,4)]#输出第一列和第四列
stats=stats[-c(1,4)]#删除第一列和第四列
stats[,"state.abb"]#使用行名字/列名取出对应行/列
stats$"state.abb"#快速取出对应行列
stats$state.abb#快速取出对应行列
attach(mtcars)#加载数据框到R搜索目录中,加载完成后可以直接在页面敲列名来加载数据框
with(mtcars,{mpg})#访问数据框
with(mtcars,{sum(mpg)})#求和
```