写了一个有问题的shiny,但是不知道哪里出错了。
更新:如果把86行的参数删掉,或这把69-78行删掉,是可以运行的。猜测是DT包的问题!
library(shiny)
library(dplyr)
library(RColorBrewer)
library(ggsci)
library(DT)
library(plyr)
#-------------------------------------------------------
# Chapter:获得一个配色表
#-------------------------------------------------------
#Rcolorbrewer配色
mlply(brewer.pal.info%>%mutate(set=rownames(.))%>%dplyr::select(maxcolors,set)%>%setNames(c("n","name")),
brewer.pal)%>%setNames(rownames(brewer.pal.info))%>%
ldply(as.data.frame)%>%dplyr::select(2:3)%>%setNames(c("Set","Color")) ->RColorBrewer_color
#ggsci颜色
ggsci_env<-environment(pal_aaas)
ggsci_env$ggsci_db%>%lapply(.,function(x){ldply(x,as.data.frame)%>%setNames(c("Set","Color"))})%>%
ldply(.,as.data.frame)%>%setNames(c("Set1","Set2","Color"))%>%mutate(Set=paste(Set1,Set2,sep = "_"))%>%
dplyr::select(Set,Color) ->ggsci_color
#-------------------------------------------------------
# Chapter:shiny
#-------------------------------------------------------
Rcolor_set<-RColorBrewer_color$Set%>%unique()
ggsci_set<-ggsci_color$Set%>%unique()
ui <- fluidPage(
selectInput("pack_select",
"Select A package",
choices = list(ggSCI="ggsci",RColorBrewer="rcolorbrewer"),
selected = "ggsci"),
uiOutput("set_select_ui"),
DT::dataTableOutput("color_table")
)
server <- function(input, output, session) {
color_set<-reactive({
if(input$pack_select=="ggsci"){
color_set=ggsci_set
}
if(input$pack_select=="rcolorbrewer"){
color_set=Rcolor_set
}
return(color_set)
})
#-----------------------------------------------------------------------------
output$set_select_ui<-renderUI(
{
selectInput("set_select",
"Select A Set",
choices = structure(color_set(),names=color_set()),
selected = color_set()[1])
}
)
#-----------------------------------------------------------------------------
#69-78行的代码可能出现了问题!!!
color_show<-reactive({
if(input$pack_select=="ggsci"){
color_show=subset(ggsci_color,Set==input$set_select)
}
if(input$pack_select=="rcolorbrewer"){
color_show=subset(RColorBrewer_color,Set==input$set_select)
}
return(color_show)
})
#-----------------------------------------------------------------------------
output$color_table<-renderDT({
datatable(color_show(),editable = F,options = list(pageLength=10))%>%
formatStyle(columns = 1,`text-align`="center")%>%
formatStyle(columns = 2,
`text-align`="center",
backgroundColor = styleEqual(color_show()$Color,color_show()$Color))
})
#-----------------------------------------------------------------------------
}
shinyApp(ui, server)
网友评论