Как уже упоминалось в комментарии, проблема в том, что столбцы в вашем фрейме данных - это не символы, а факторы.В большинстве случаев удобнее работать с персонажами.В этом случае вы можете использовать stringsAsFactors = FALSE
внутри data.frame(...)
.Затем вы можете заказать по второму столбцу:
d2 <- data.frame(AS,ASe, stringsAsFactors =FALSE)
d2[order(d2$ASe),]
AS ASe
1 Composite Composite
2 DGIdb DGIdb
5 Repurposing Drug Repurposing Hub
3 DrugBank DrugBank
4 DrugCentral_Human DrugCentral (Human)
6 LINCS_Data_Portal LINCS Data Portal
7 TargetCentral TargetCentral
Как видите, второй столбец ASe
находится в правильном алфавитном порядке.Пробел (т.е. " "
) стоит перед каждой буквой.Поэтому Drug Repurposing Hub
предшествует DrugBank
.
Если вы настаиваете на том, чтобы оставить пробел последним, вы можете использовать обходной путь, подобный этому:
d2[order(gsub(" ", "z", d2$ASe)),]
AS ASe
1 Composite Composite
2 DGIdb DGIdb
3 DrugBank DrugBank
4 DrugCentral_Human DrugCentral (Human)
5 Repurposing Drug Repurposing Hub
6 LINCS_Data_Portal LINCS Data Portal
7 TargetCentral TargetCentral
РЕДАКТИРОВАТЬ: Решение, предложенное Беном Болкером, еще лучше:
d2[order(gsub(" ", "", d2$ASe)),]