一,合并向量
>append(x, values, after = length(x))#从一个向量的指定位置处,插入另一个向量>append(1:5, 0:1, after = 3)[1] 1 2 3 0 1 4 5
二,匹配函数
匹配函数(match)返回一个位置向量,表示 x 匹配table的位置。%in% 返回一个逻辑向量
x %in% table #%in% 返回一个逻辑向量,表示左边的操作符是否匹配右边的操作符。
2.1 match()函数的用法
x <- c(3,1,7)tb <- c(-1:5)match(x,tb)# 5 3 NA#实例#match()函数可以用于批量修改数据框的列名:names(df)[match(c(\'a\',"b", "c)","d"),names(df))]<- c(\'C1\',\'C2\',\'C3\',\'C4\')
2.2 操作符 %in%的用法
#操作符 %in% 在底层使用match()函数实现:#用法 function(x, table) match(x, table, nomatch = 0) > 01:10 %in% c(1,3,5,9)#[1] TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE TRUE FALSE
三,cut函数
cut()函数用于切割x的范围,每一个范围是一个分区;cut()函数根据分区的顺序对x中的值进行编码,也就是说,每一个分区从左向右依次对应lables向量中的一个因子,最左边的分区对应于lables向量的第一个因子,第二个分区对应lables向量中的第二个因子,以此类推。
cut(x, breaks, labels = NULL, include.lowest = FALSE, right = TRUE, dig.lab = 3,ordered_result = FALSE, ...) #示例 vc <- c(1:6)cut(vc,breaks=c(0,2,5,7),labels = c(\'low\',\'medium\',\'high\'))#[1] low low medium medium medium high #Levels: low medium high
四,排名函数
功能:rank()排名函数用于对向量元素进行排名,按照升序的顺序对数据进行排序,排名的结果存储到变量中。
#用法:rank(x, na.last = TRUE, ties.method = c("average", "first", "last", "random", "max", "min"))#参数注释#na.last :控制如何对待NA,如果设置为TRUE,那么缺失值排在最后一位;如果为FALSE,那么缺失值排在第一位;如果设置为NA,那么缺失值被移除;如果设置为keep,那么排名为NA。#ties.method :控制如何对待tie,一个tie是指值重复的元素。r1 <- rank(x1 <- c(3, 1, 4, 15, 92))#[1] 2 1 3 4 5
五,替换
函数replace()用于把向量中指定位置的元素替换为指定的值(或向量):
replace(x, list, values)
参数注释:
list:整数向量,指定被替换的元素的位置 values:替换的值(或向量)> replace(1:9,c(1,3,7),0)#[1] 0 2 0 4 5 6 0 8 9
六,重复
功能:rep()函数把输入的参数重复多次,如果参数是表达式,rep()函数会把表达式的结果重复多次;而replicate()函数是重复调用表达式。
> rep(runif(1),5)#[1] 0.8721105 0.8721105 0.8721105 0.8721105 0.8721105> replicate(5,runif(1))#[1] 0.9426709 0.1280271 0.1926333 0.7091503 0.5404846
七,逆转
功能:rev()函数用于把一个向量的元素逆转
> rev(c(1,5,3,7))#[1] 7 3 5 1
八,排序
功能:sort()函数用于对向量排序,返回有序的向量;order()函数返回向量元素的序号,能够用于对data.frame排序
order(..., na.last = TRUE, decreasing = FALSE, method = c("auto", "shell", "radix"))sort(x, decreasing = FALSE, na.last = NA, ...) df <- data.frame(x=c(6,3,7,5),y=c(5,1,7,3))df[order(df$y),] x y2 3 14 5 31 6 53 7 7
九,删除重复值
功能:第一种做法是把返回向量中的唯一值;第二个方法是返回向量中重复元素的位置,然后删除重复元素。
9.1,删除重复值
#unique() 函数用于移除重复数据,用于向量,数据框或数组的去重unique(x, incomparables = FALSE)
9.2,检查重复值
#duplicated()函数用于检查重复的元素,返回元素类型是逻辑值的向量或数据框:当元素的值为FALSE时,表示该元素不是重复值;当元素的值是TRUE时,表示该元素是前面(位置)的某一个元素的重复值。#duplicated(x, incomparables = FALSE, ...)df <- df[!duplicated(df$var),]
十,逻辑TRUE的索引
功能:which()函数,用于从逻辑向量中返回TRUE值在向量中的索引,参数x是一个由逻辑值构成的向量
which(x)> which(lv <- c(TRUE, FALSE, TRUE, NA, FALSE, FALSE, TRUE))[1] 1 3 7> which(exper <- c(1:9)>5)[1] 6 7 8 9
十一,构造环境
#数据框,使R表达式位于数据框的作用环境中,便于对数据框变量的引用
with(data, expr, ...)within(data, expr, ...) with(mtcars, mpg[cyl == 8 & disp > 350])#only define one variablemtcars$mpg[mtcars$cyl == 8 & mtcars$disp > 350]#define multiple variablesaq <- within(airquality, { # multiple vars can be changed lOzone <- log(Ozone) Month <- factor(month.abb[Month]) cTemp <- round((Temp - 32) * 5/9, 1) S.cT <- Solar.R / cTemp # using the newly created variable rm(Day, Temp)})
十二,Reduce函数
功能:Reduce()函数对一个向量循环执行函数(该函数有两个参数)
Reduce(f, x, init, right = FALSE, accumulate = FALSE)
参数注释:
f :有两个参数的函数对象 x:向量 init :一个标量值,类型和x向量的元素相同; right :逻辑值,当值为FALSE时,从向量的左侧开始,依次向右侧取出元素传递到给函数;当值为TRUE时,从向量的右侧开始,依次向左侧取出元素,传递给函数; accumulate:逻辑值,a logical indicating whether the successive reduce combinations should be accumulated. By default, only the final combination is used.> Reduce(sum,1:5,10)[1] 25
十三,条件过滤器
功能:按照条件从向量中选择元素,当条件为TRUE时,把该元素添加到结果向量中。参数 f 是一个返回逻辑值的函数(该函数必须有一个输入参数),参数x是一个向量。
Filter(f, x)> fx <- function(x) x>5;> Filter(fx,1:10)[1] 6 7 8 9 10
十四,计算累加
功能:使用cumsum(x)来计算向量元素的累加值,累加的计算过程是迭代的
> cumsum(1:5)[1] 1 3 6 10 15
十五,计数出现的次数(tabulate)
功能:tabulate()函数的作用是使用bin构造整数向量v,并计算bin中每个整数在v中出现的次数。
tabulate(bin, nbins = max(1, bin, na.rm = TRUE))> tabulate(bin = c(2,3,3,5))#[1] 0 1 2 0 1
十六,diff
功能:函数计算向量相邻元素之间的差异,后者减去前者
d= c(10,1,1,1,1,1,1,2,1,1,1,1,1,1,1,3,10)diff(d)[1] -9 0 0 0 0 0 1 -1 0 0 0 0 0 0 2 7