Изменить форматирование ячейки таблицы в зависимости от состояния в блестящем - PullRequest
0 голосов
/ 11 июля 2019

У меня блестящее приложение, которое выдает таблицу статистики тестов. Я бы хотел выделять жирным шрифтом ячейки, которые меньше заданного пользователем критического значения. В приведенном ниже примере я поставил * рядом со значимыми значениями. Я бы хотел, чтобы это число было выделено жирным шрифтом. Я не уверен, что лучший способ сделать это. Может быть, DT:: datatable() подходит для работы?

library(shiny)
library(ggplot2)
# Define UI for application that draws a histogram
ui <- fluidPage(

   # Sidebar with a slider input for number of bins 
   sidebarLayout(
      sidebarPanel(
        numericInput(inputId="pcrit", label="P crit", 
                     value=0.05,min=0,max=1,step=0.001)
      ),

      mainPanel(
         plotOutput("datPlot"),
         tableOutput("sigTable")
      )
   )
)

server <- function(input, output) {

  doDat <- reactive({
    n <- 5e2
    nTrials <- 10

    dat <- data.frame(x = rnorm(n),
                      w = seq(0.01,0.5,length.out = nTrials),
                      trial = 1:nTrials)

    dat$y <- dat$x * dat$w + rnorm(n)
    dat
  })
    doCorr <- reactive({
    dat <- doDat()
    res <- data.frame(trial=1:nTrials,corr=NA,pVal=NA)
    for(i in 1:nTrials){
      tmp <- cor.test(formula=~y+x,data=dat[dat$trial==i,])
      res$corr[i] <-tmp$estimate
      res$pVal[i] <-tmp$p.value
    }
    res  
  })

   output$datPlot <- renderPlot({
     dat <- doDat()
     p <- ggplot(data = dat,aes(x=x,y=y))
     p <- p + geom_point()
     p <- p + facet_wrap(~trial)
     p
   })
   #change this to produce bolded numbers rather than use the clunky *
   output$sigTable <- renderTable({
     res <- doCorr()
     res$corr <- round(res$corr,3)
     pcrit <- input$pcrit
     res$corr[res$pVal <= pcrit] <- paste(res$corr[res$pVal <= pcrit],
                                          "*",sep="")  
     res
   })
}

shinyApp(ui = ui, server = server)

1 Ответ

1 голос
/ 11 июля 2019

Можете ли вы попробовать приведенный ниже код ....

library(shiny)
library(ggplot2)
library(DT)
# Define UI for application that draws a histogram
ui <- fluidPage(

  # Sidebar with a slider input for number of bins 
  sidebarLayout(
    sidebarPanel(
      numericInput(inputId="pcrit", label="P crit", 
                   value=0.05,min=0,max=1,step=0.001)
    ),

    mainPanel(
      plotOutput("datPlot"),
      DTOutput("sigTable")
    )
  )
)

server <- function(input, output) {

  doDat <- reactive({
    n <- 5e2
    nTrials <<- 10

    dat <- data.frame(x = rnorm(n),
                      w = seq(0.01,0.5,length.out = nTrials),
                      trial = 1:nTrials)

    dat$y <- dat$x * dat$w + rnorm(n)
    dat
  })
  doCorr <- reactive({
    dat <- doDat()
    res <- data.frame(trial=1:nTrials,corr=NA,pVal=NA)
    for(i in 1:nTrials){
      tmp <- cor.test(formula=~y+x,data=dat[dat$trial==i,])
      res$corr[i] <-tmp$estimate
      res$pVal[i] <-tmp$p.value
    }
    res  
  })

  output$datPlot <- renderPlot({
    dat <- doDat()
    p <- ggplot(data = dat,aes(x=x,y=y))
    p <- p + geom_point()
    p <- p + facet_wrap(~trial)
    p
  })
  #change this to produce bolded numbers rather than use the clunky *
  output$sigTable <- renderDT({
    res <- doCorr()
    res$corr <- round(res$corr,3)
    pcrit <- input$pcrit
    res$corr[res$pVal <= pcrit] <- paste(res$corr[res$pVal <= pcrit],
                                         "*",sep="")  
    datatable(res,rownames = FALSE) %>% 
      formatStyle('corr', fontWeight = styleInterval(input$pcrit, c('normal', 'bold'))) 
  })
}

shinyApp(ui = ui, server = server)

Пожалуйста, обратитесь к этому документу для подробной информации: https://rstudio.github.io/DT/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...