基于单独的向量对数据框的行名称进行排序

chi*_*fan 1 sorting r match dataframe

我根据行名称和外部向量对数据框的行进行排序。向量可以比行数短。

我尝试了匹配和顺序的不同组合,但他们不想将 rownames(df) 作为参数,或者它会创建一个因子向量

df <- data.frame(info = c("cluster1","cluster7", "cluster1", "cluster3"),row.names = c("gacg","cggt","cgat", "ccat"))

vector <- c("gacg","cgat","cggt")

       info
gacg   cluster1
cggt   cluster7
cgat   cluster1
ccar   cluster3
Run Code Online (Sandbox Code Playgroud)

我尝试了此解决方案的变体:

df2<-df[order(match(df$rownames,vector)),] #produces some type of vector of factors
Run Code Online (Sandbox Code Playgroud)

我想要一个数据框,其行名的顺序与向量的顺序相同,并且向量数据框比向量短的不匹配行应放置在末尾。

       info
gacg   cluster1
cgat   cluster1
cggt   cluster7
ccar   cluster3
Run Code Online (Sandbox Code Playgroud)

Cle*_*ang 5

您可以使用 :

df[order(match(rownames(df), vector)), , drop = FALSE]
Run Code Online (Sandbox Code Playgroud)