闪亮的应用程序:警告:data.frame中的错误:参数意味着不同的行数:2,0

时间:2016-08-15 19:20:34

标签: r shiny

#install.packages("shinythemes")
#install.packages("shinyjs")
install.packages("DT")
install.packages("reshape2")

library(shiny)
library(shinythemes)
library(shinyjs)
library(DT)
library(reshape2)

data <- read.csv("C:/Users/Kanchan/Desktop/timeforcompletion.csv")


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

  dat <- reactive ({

    row1 <- row.names (data[data$Chromosomes == input$select & 
                              data$Data.per.chromosomes == input$select1 &
                              data$CPU.worker == input$select2,])
    row1 <- as.numeric(row1)
    out1 <- data$Num.of.workers[row1]
    out2 <- data$Time.to.complete..Mins.[row1]



    val <- data.frame(Name = c("Num of workers","Time.to.complete..Mins." ), Value = c(out1,out2)
                      ,stringsAsFactors = FALSE)
    #require(reshape2)
    #melt(val)
    return(val)

  })

  output$mytable <- DT::renderDataTable(dat())


}


ui <- fluidPage( theme = shinytheme("cosmo"),
                 shinyjs::inlineCSS(list(body = "color:DarkBlue")),
                 titlePanel("WQ-MAKER"),

                 sidebarLayout(

                   sidebarPanel(
                     "Sidebar"
                   ), #endsidebarpanel

                   mainPanel(

                     selectInput("select", label = h3("Chromosomes"), 
                                 choices = list("12" = 1, "24" = 2), 
                                 selected = 1),
                     selectInput("select1", label = h3("Data per chromosomes"), 
                                 choices = list("100000" = 1, "200000" = 2, "1000000" = 3), 
                                 selected = 1),
                     selectInput("select2", label = h3("CPU per worker"), 
                                 choices = list("4" = 1), 
                                 selected = 1),
                     #textOutput("text1")
                     hr(),
                     DT::dataTableOutput("mytable")

                   )#end mainpanel
                 )# end sidebarlayout
)



shinyApp(ui = ui, server = server)

输入数据集如下所示:

Chromosomes Data per chromosomes    CPU/worker  Num of workers  Time to complete (Mins)          
12          100000                  4           3               16.8333
24          100000                  4           3               23.4167
12          200000                  4           3               23.1333
12          1000000                 4           3               54.7667
12          1000000                 4           7               17.5444

我明白问题在于输出$ mytable。请帮我纠正代码以返回显示2个值的输出。

工人数:xxx 完成时间:xxxx

1 个答案:

答案 0 :(得分:1)

第一个问题似乎是您的dat函数按值过滤数据框,但您的selectInput选项与任意索引相关联,这些索引与原始{ {1}}。丢失data= 1等,应用程序几乎可以正常运行。

= 2

接下来,如果没有返回数据值,则需要 selectInput("select", label = h3("Chromosomes"), choices = list("12", "24"), selected = 1), selectInput("select1", label = h3("Data per chromosomes"), choices = list("100000", "200000", "1000000"), selected = 1), selectInput("select2", label = h3("CPU per worker"), choices = list("4"), selected = 1), 函数返回NULL。

dat

现在您应该看到一个打印有值的数据框,但此时您可能需要调整输出以使其看起来更像您最初想要的内容。如果没有值与选择条件匹配,您可能还希望应用程序打印友好消息。两者都留给读者练习。 :)