R语言

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 # 取子集
上一篇下一篇

猜你喜欢

热点阅读