Сортировка имен строк фрейма данных на основе отдельного вектора

#r #sorting #dataframe #match

#r #сортировка #фрейм данных #совпадение

Вопрос:

Я упорядочиваю строки фрейма данных на основе моих имен строк и внешнего вектора. Вектор может быть короче, чем количество строк.

Я пробовал разные комбинации соответствия и порядка, но они не хотят принимать имена строк (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:

Вы можете использовать :

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