У меня есть вектор имен хромосомныхсортировать по имени хромосоме
q<-c("1","10","11","12","13","14","15","16","17",
"18","19","20","21","22","2","3","4","5","6",
"7","8","9","X","Y","M")
Я хочу, чтобы отсортировать их
q<-c("1","2","3","4","5","6","7","8","9","10","11",
"12","13","14","15","16","17","18","19","20",
"21","22","X","Y","M")
Я пытался сделать свой собственный заказ
chrOrder <-c((1:22),"X","Y","M")
и использование это как
factor(cbind(q),levels=chrOrder)
Но все же я не смог его получить.
Отредактировано ..... У меня есть аналогичный сенарио, но слабо развит. У меня есть кадр данных из трех столбцов, имя, хромосома, начало
df <-data.frame(name =c("a","a","a","b","b","b"), chrom = c(1,2,10,1,3,"X"), start=c(100,200,300,500,300,200))
Мне нужно сортировать его сначала по имени, затем хромосоме и начала. Результат должен быть, как
name chrom start
a 1 100
a 10 300
a 2 200
b 1 500
b 3 300
b X 200
Я не знаю, как использовать chrOrder в следующем:
indata <- df[do.call(order,df[,c(name, chrom, start)]),];
Почему бы не использовать 'chrOrder' напрямую? Почему вы ожидаете, что «фактор» сортирует ваш вектор? Подобным образом, 'cbind' здесь не действует. –
Меня смущает желаемый результат редактируемого вопроса. Ошибочно ли, что третья строка не до второй строки? – blakeoft
Сортируется по первому «имени», затем «хром». где сортировка числа не происходит естественным образом. Его как 1,10,100,2,200,22,299,300 – user1631306