2016-03-18 4 views
0

У меня возникли проблемы с DT :: rednerDataTable. Когда мой datatable создается, у меня есть три (из 10) столбцов чисел, которые не сортируются. Это то, что это выглядит как сортируется: enter image description hereR shiny Datatable column не сортировка как числовая

Вот мой код:

library(shiny) 
library(shinydashboard) 
ui <- dashboardPage(
dashboardBody(
    tabItems((tabName = "ResultsTable", 
       fluidPage(column(11, DT::dataTableOutput("table",width = "100%"),offset = 0)))) 

shinyServer(function(input, output, session) { 
     output$table <- DT::renderDataTable(DT::datatable({ 
      data <- rv$data 
      if (input$sour != "All") { 
      data <- data[data[,1] == input$sour,] 
      }else{data} 
      if (input$sour1 != "All") { 
      data <-data[data[,2] == input$sour1,] 
      }else{data} 
      if (input$tran2 != "All") { 
      data <-data[data[,3] == input$tran2,] 
      }else{data} 
     })) 
}) 

переменные данные представляет собой data.frame и числовые столбцы уже отсортированы, но, как я нажимаю вверх и вниз стрелки рядом с именем столбца в таблице (как показано ниже) сортировка путается.

Буду признателен за любую помощь!

Thank you

+3

Попробуйте сделать его полным примером. Но вам, вероятно, просто нужно преобразовать типы столбцов в числовые с помощью 'as.numeric (col)' или - если они были фактором - ('as.numeric (as.character (col))' –

+0

Я думал, что сделал это уже проблема, но это была проблема.Я пытался изменить ее, пока она была матрицей.Я переключил его на фрейм данных и смог иметь часть столбцов как числовые. Спасибо @ Mike Wise – Tracy

+0

Это на самом деле возможно, что это помогло бы кому-то в будущем, поэтому я отправлю его в качестве ответа, если вы его примете. Это хорошо? У вас тоже есть репутация. –

ответ

0

Мои данные были матрицей. Сначала мне пришлось преобразовать его в кадр данных, а затем изменить столбцы, необходимые для числовых (некоторые строки столбцов). Мне не пришлось менять свой код выше. Именно в скрипте была создана таблица данных. Таблица состоит из 10 столбцов с числом столбцов 5: 8 в виде числа.

table_output=as.data.frame(table_output); 
data=cbind(table_output[,1:4],as.numeric(as.character(table_output[,5])),as.numeric(as.character(table_output[,6])),as.numeric(as.character(table_output[,7])), as.numeric(as.character(table_output[,8])), table_output[,9:10]) 
Смежные вопросы