Как отформатировать несколько столбцов отдельно в R Shiny - PullRequest
0 голосов
/ 18 марта 2020

Я новичок в R Shinyapps, поэтому мой вопрос может показаться немного глупым.

Пожалуйста, примите мои извинения за это.

Я изо всех сил пытаюсь получить данные в таблицу в соответствии с в требуемый формат столбца.

В настоящее время таблица выглядит следующим образом:

RenderTable

Итак, у меня в таблице 11 столбцов, Я хочу, чтобы столбцы были отформатированы, как показано ниже:

  • "от Col-2 до Col-7", все с десятичным разрядом 1 di git.
  • "Col-8 до Col -10 "все имеют 0 ди git десятичный знак (без десятичного знака).
  • " Col-11 ", имеющий 2 ди git десятичный знак.

Любые предложения о том, как чтобы сделать это?

Я использовал приведенную ниже функцию "renderTable" для генерации таблицы:

output$table <- renderTable(align="c", digits = 1, width="auto", na="-", subset(all, PRODUCT_NAME==as.character(input$product_choice))
                          [,c("Col-1", "Col-2", "Col-3", "Col-4", "Col-5", "Col-6", "Col-7", "Col-8", 
                              paste0("Col-9 ",input$cur), paste0("Col-10 ",input$cur), "Col-11")],)

Я пытался использовать "Digits = 1", но он форматирует все столбцы в 1 десятичное место.

Я не могу найти способ применить аргумент цифры для разных десятичных знаков в отдельных столбцах. Но мне нужно отдельно отформатировать столбцы. Мне нужны эксперты, чтобы помочь мне с этим, пожалуйста. Я буду вам очень благодарен.

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Используя пакет DT, вы можете выбрать столбцы для форматирования по их имени или номеру. Кроме того, formatRound - не единственный тип форматирования, предоставляемый этим пакетом (см. formatCurrency, et c.):

library(shiny)
library(DT)

ui <- fluidPage(
  dataTableOutput("test")
)

server <- function(input, output, session) {

  output$test <- renderDataTable({
    DT::datatable(iris) %>% 
      formatRound("Petal.Length", digits = 2, mark = "") %>%
      formatRound(1, digits = 4)
  })

}

shinyApp(ui, server)
0 голосов
/ 19 марта 2020

Если renderTable не дает вам полный контроль над нужными вам параметрами, лучше всего отформатировать столбцы как символы с помощью sprintf (), который даст вам полный контроль над тем, что вы можете отобразить.

После этого вы можно выровнять их вправо как числа, используя параметр align = в renderTable (), который позволяет указывать отдельные выравнивания для каждого столбца.

...