#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]