1. rep()函数
目的: 复制向量或因子
函数形式: rep(x, time = , length = , each = ,)
参数说明:
- x:代表的是要复制的对象,可以是一个向量或者是一个因子。
- times:代表的是复制的次数,只能为正数。负数以及NA值都会为错误值。复制是指的是对整个向量进行复制。
- each:代表的是对向量中的每个元素进行复制的次数。
- length.out:代表的是最终输出向量的长度。
示例:
rep(1:4, 2) #对向量(1,2,3,4)复制两次
[1] 1 2 3 4 1 2 3 4
rep(1:4, each = 2, times = 3) #对向量(1,2,3,4)复制三次,每个元素复制两遍
[1] 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4 1 1 2 2 3 3 4 4
rep(1:4, each = 2) #对向量(1,2,3,4)中的每个元素复制两次
[1] 1 1 2 2 3 3 4 4
rep(1:4, c(2,2,2,2)) #each:每个元素循环对应次数
[1] 1 1 2 2 3 3 4 4
rep(1:4, c(2,1,2,1)) #each:每个元素循环对应次数
[1] 1 1 2 3 3 4
rep(1:4, each = 2, length.out = 4) #最后输出向量的长度为4
[1] 1 1 2 2
rep(1:4, each = 2, len = 13) #length.out 输出长度,不够加times补齐
[1] 1 1 2 2 3 3 4 4 1 1 2 2 3
2. apply()函数集合
(1)apply()函数
目的: 将数据框或矩阵作为输入,并以矢量,列表或数组形式输出。主要用于避免重复使用循环结构。
函数形式:apply(X, MARGIN, FUN)
参数说明:
- x:数组或矩阵
- MARGIN:取一个介于1到2之间的值或范围,以定义该函数的应用位置:
-MARGIN = 1:对行执行操作
-MARGIN = 2:对列执行操作
-MARGIN = c(1,2):该操作在行和列上执行 - FUN:告诉应用哪个功能。可以应用平均值,中位数,和,最小值,最大值甚至用户定义的函数等内置函数。
示例:求和
m1 <- matrix(C<-(1:10),nrow=5, ncol=6)
m1
a_m1 <- apply(m1, 2, sum)
a_m1
(2)lapply()函数
目的: 用于对列表对象执行操作,并返回与原始集合长度相同的列表对象
函数形式: lapply(X, FUN)
参数说明:
- X: 向量或对象
- FUN: 对X中每个元素的处理过程
lapply()中的l代表列表。lapply()和apply()之间的区别在于输出返回之间。lapply()的输出是一个列表。lapply()可以用于其他对象,例如数据框和列表。
示例:字符串值更改为小写
movies <- c("SPYDERMAN","BATMAN","VERTIGO","CHINATOWN")
movies_lower <-lapply(movies, tolower)
str(movies_lower)
#输出结果
List of 4
$ : chr "spyderman"
$ : chr "batman"
$ : chr "vertigo"
$ : chr "chinatown"
#使用unlist()将列表转换为向量
films_lower <- unlist(lapply(movies, tolower))
str(films_lower)
#输出结果
chr [1:4] "spyderman" "batman" "vertigo" "chinatown"
(3)sapply()函数
目的: 将列表,向量或数据帧作为输入,并以向量或矩阵形式输出。它对列表对象的操作很有用,并返回与原始集合长度相同的列表对象。sapply()函数执行的功能与lapply()函数相同,但返回一个向量。
函数形式: sapply(X, FUN)
参数说明:
- X: 向量或对象
- FUN: 对X中每个元素的处理过程
示例:从汽车数据集中测量汽车的最小速度和停车距离
dt <- cars
lmn_cars <- lapply(dt, min)
smn_cars <- sapply(dt, min)
lmn_cars
smn_cars
#输出结果
> lmn_cars
$speed
[1] 4
$dist
[1] 2
> smn_cars
speed dist
4 2
参考:https://www.jianshu.com/p/59fb24ca2ea7
3. set.seed()函数
目的: 设定生成随机数的种子,种子是为了让结果具有重复性。如果不设定种子,生成的随机数无法重现。(给生成的随机数编号,以方便后续的调用)
函数形式:set.seed(seed)
参数说明:seed是自己指定的任意数字
示例:
> x<-rnorm(10) #随机生成10个随机数
> x
[1] 0.3897943 -1.2080762 -0.3636760 -1.6266727 -0.2564784 1.1017795 0.7557815
[8] -0.2382336 0.9874447 0.7413901
> x<-rnorm(10) #再次随机生成10个随机数
> x
[1] 0.08934727 -0.95494386 -0.19515038 0.92552126 0.48297852 -0.59631064 -2.18528684
[8] -0.67486594 -2.11906119 -1.26519802
> set.seed(5) #设定种子
> x<-rnorm(10) # 在设定种子的前提下生成10个随机数
> x
[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639
[8] -0.63537131 -0.28577363 0.13810822
> set.seed(5) # 设定种子
> y<-rnorm(10)
> y
[1] -0.84085548 1.38435934 -1.25549186 0.07014277 1.71144087 -0.60290798 -0.47216639
[8] -0.63537131 -0.28577363 0.13810822
> x == y
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
4. sample()函数
目的:随机抽样和排列。样本从 x 元素中抽取指定大小的样本,使用或者有或者没有替换。
函数形式:sample(x, size, replace = FALSE, prob = NULL)
参数说明:
- x:一个或多个可供选择的元素的向量(vector),或一个正整数
- size:一个非负整数,抽样的大小,抽取元素的多少
- replace:是否为有放回抽样。与之对应的无放回抽样(replace=F,默认),指某个元素一旦被选择,该总体中就不会再有该元素。如果是有放回抽样(replace=T),可重复抽到同一个样品
- prob:“probability”(概率)的缩写,指抽取元素的概率
示例:
> x=1:10
> sample(x=x,size=20,replace=T) #从向量x中抽20个元素,有放回抽样
[1] 4 9 2 6 4 5 4 7 10 5 2 2 3 4 2 4 6 8 7 8
> a=c("A","B")
> sample(x=a,size=10,replace=T) #从向量a中抽取十个样本,有放回抽样
[1] "B" "A" "A" "A" "B" "A" "A" "B" "A" "A"
> x=c("S","F")
> sample(x,size=20,replace=T,prob=c(0.8,0.2)) #从向量x中抽取10个样本,有放回抽样,且向量x中两个元素被抽取的概率分别为0.8和0.2
[1] "F" "S" "S" "S" "S" "S" "S" "S" "S" "S" "S" "S" "F" "S" "S" "F" "S" "S"
[19] "F" "S"
> x=c(1,3,5,7)
> sample(x,size=20,replace=T,prob=c(0.1,0.2,0.3,0.9)) #所有元素被抽取的概率是独立的,即在参数prob中,不一定所有元素的概率加起来等于1,它只代表某元素被抽取的概率而已
[1] 3 5 7 3 7 3 7 5 3 7 7 7 1 5 7 5 7 7 3 7