R语言学习难点——match函数
2021-04-17 本文已影响0人
Xinli_5d16
From:生信技能树 and R
match函数
match(x, table, nomatch = NA_integer_, incomparables = NULL)
意思是:向量x在向量table中排第几位,没有匹配返回为NA,返回不能匹配的向量:null
各个参数的意义:
x 表示 向量or空值,它是用来比较的。
table 表示向量,它用来跟x比较。
nomatch 返回没有匹配的向量,它会强制转换为整数
incomparables 返回不能匹配的向量
例题(1)
> x <- c("A","B","C","D","E")
> y <- c("B","D","E","A","C")
> match(x,y) # x在y中的顺序,返回的是下标。
[1] 4 1 5 2 3
例题(2)
> match(c(1,2,3),c(2,3,6))
[1] NA 1 2 #1在,后的向量中不能匹配,所以返回NA。
例题(3)
就想看看各个参数的意义
> x <- c("A","B","C","D","E","G")
> y <- c("B","D","E","A","C","H")
> match(x,y)
[1] 4 1 5 2 3 NA
> match(x,y,T,T)
[1] 4 1 5 2 3 1
> match(x,y,,T)
[1] 4 1 5 2 3 NA
> match(x,y,T)
[1] 4 1 5 2 3 1
> match(c("a","b","d","y"),c(1,2,3))
[1] NA NA NA NA #两个向量数据类型不一致
> match(c("a","b","d","y"),c(1,2,3),nomatch = T,incomparables = T)
[1] 1 1 1 1 # 两个向量数据类型不一致,会发生强制转化,但是nomatch的参数被我改成了T,则输出整数为T???
> match(c("a","b","d","y"),c(1,2,3),nomatch = T,incomparables = NULL)
[1] 1 1 1 1 # ???
> match(c("a","b","d","y"),c(1,2,3),incomparables = NULL)
[1] NA NA NA NA
> match(c("a","b","d","y"),c(1,2,3),incomparables =T)
[1] NA NA NA NA
例题4
> match(c(1, "TRUE"), c(T, 0, "1"))
[1] 3 1 # 两个向量数据类型不一致,会发生转换。
例题5,加上赋值
load("E:/STDYT/firsttest/01-get_start/matchtest.Rdata")
n=match(colnames(y),x$file_name) # 先根据y调整x_file_names的顺序,重新排序。
n
x = x[n,] #取子集
x$file_name # 看x file names的顺序
colnames(y) #看y的colnames
identical(x$file_name,colnames(y)) # 判断两者是否一样,ture,顺序、数据类型、数据结构都是一致。
colnames(y)=x$ID # 取子集