2016-07-01 3 views
0

Я использую RenderDataTable для отображения фрейма данных. Использование order = list(list(column_number, 'desc')) работает для любой колонки, кроме индекса. Хотелось бы сортировать по убыванию, чтобы увидеть новейшие записи наверху. Использование 0 не работает в RenderDataTable. Любая идея принудительно сортировать по убыванию в списке опций? Значение по умолчанию всегда возрастает по индексу.Descending сортировка по строкам индексный кадр данных Shiny

Вот моя попытка:

DT::datatable(reporting[], 
        options = list(
        lengthMenu = c(10, 25, 50, 100, 150, 200), 
        order = list(list(0, 'desc')), 
        pageLength = 25 
       )) 
+1

почему бы не заказывать 'отчетности []' data.frame? – Jimbou

+0

это фактически внутри оператора if, когда кнопка действия равна 0, иначе я вызываю функцию 'report_update()' вместо 'report []'. И эта функция получает данные из SQLite DB. Мне пришлось бы сортировать массив DB. Кажется, проще сортировать здесь на дисплее. – noblabla

ответ

0

Вы можете попробовать order = DT[order(as.numeric(rownames(DT)),decreasing = TRUE)], которые должны заказать ваши данные в порядке убывания. Хотя, трудно реплицировать вашу проблему без данных. Вот рабочий пример, я был в состоянии произвести:

DT = data.table(x=rep(c("b","a","c"),each=3), y=c(1,3,6), v=1:9)

DT

x y v 
1: b 1 1 
2: b 3 2 
3: b 6 3 
4: a 1 4 
5: a 3 5 
6: a 6 6 
7: c 1 7 
8: c 3 8 
9: c 6 9 

DT[order(as.numeric(rownames(DT)),decreasing = TRUE)]

x y v 
1: c 6 9 
2: c 3 8 
3: c 1 7 
4: a 6 6 
5: a 3 5 
6: a 1 4 
7: b 6 3 
8: b 3 2 
9: b 1 1 
+0

Спасибо, он работает. Мне пришлось добавить запятую по какой-то причине: DT [order (as.numeric (rownames (DT)), убывающий = TRUE),] 'для обхода ошибки' undefined columns selected order' – noblabla

Смежные вопросы