根据单独的向量对数据帧的行名进行排序

时间:2019-04-01 07:22:11

标签: r sorting dataframe match

我正在根据行名和外部向量对数据帧的行进行排序。向量可以短于行数。

我尝试了匹配和顺序的不同组合,但他们不想将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

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

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

我希望数据帧的行名与向量的顺序相同,并且向量数据帧比向量短的不匹配行应放在末尾。

       info
gacg   cluster1
cgat   cluster1
cggt   cluster7
ccar   cluster3

1 个答案:

答案 0 :(得分:0)

您可以使用:

df[order(match(rownames(df), vector)), , drop = FALSE]