我正在尝试在闪亮的应用程序中格式化反应表并使用DT包显示它。有很多关于如何使用非反应表执行此操作的示例,例如:https://rstudio.github.io/DT/010-style.html。但是当我尝试以相同的方式使用反应函数的输出时,我得到列名称错误。这是一个例子:
library(shiny)
library(DT)
ui <- fluidPage(
fluidRow(
column(3,numericInput("nrows","Enter the number of rows",value=10)),
column(9,DT::dataTableOutput("table"))
)
)
server <- function(input, output, session) {
cars2 <- reactive({
cars <- datasets::cars
cars2 <- cars[1:input$nrows,]
return(cars2)
})
output$table <- DT::renderDataTable(cars2()%>% formatStyle( 'speed',backgroundColor = c('yellow')),options=list(pageLength=50))
}
shinyApp(ui=ui,server=server)
这是错误
Warning: Error in name2int: You specified the columns: speed, but the column names of the data are
Stack trace (innermost first):
94: name2int
93: appendFormatter
92: formatColumns
91: formatStyle
90: function_list[[k]]
89: withVisible
88: freduce
87: _fseq
86: eval
85: eval
84: withVisible
83: %>%
82: exprFunc
81: widgetFunc
80: func
79: origRenderFunc
78: renderFunc
77: origRenderFunc
76: output$table
1: runApp
答案 0 :(得分:1)
这有效:
server <- function(input, output, session) {
cars2 <- reactive({
cars <- datasets::cars
cars2 <- cars[1:input$nrows,]
return(cars2)
})
output$table <- renderDataTable({
datatable(cars2(), options = list(pageLength = 50)) %>%
formatStyle('speed', backgroundColor = 'yellow')
})
}
答案 1 :(得分:0)
我有一个反应式数据框也有同样的问题。遵循 Sagar 建议的示例。我首先为数据帧构建了一个函数,然后尝试在输出中显示数据帧。同样的错误显示:警告:name2int 中的错误:您指定了列:基因探针,但数据的列名是
g2wdataframefunction <- function() {
return (gene2weight_table()$myg2wdata)
}
output$g2weightSummaryTable = DT::renderDataTable(
DT::datatable(
g2wdataframefunction() %>% formatStyle("Gene Probe", backgroundColor = 'lightblue'),
rownames = TRUE,
... # 后面的行是无关紧要的