2017-08-22 221 views
0

我想根據用戶通過文件輸入的數據顯示圖表(對於Shiny應用程序)。使用當前的設置,有一個錯誤消息聲稱沒有找到數據,所以圖(從rCharts包)不顯示。輸入文件後顯示R閃亮圖

代碼下面附:

ui.R

library(rCharts) 
library(shinydashboard) 
library(shiny) 
dashboardPage(
    skin = "black", 
    header <- dashboardHeader(
    titleWidth = 475 
), 
    sidebar <- dashboardSidebar(
    sidebarMenu(
    )  
), 
    body <- dashboardBody(
    tabItems(
     tabItem("setup", 
       box(width = 4,title = tags$b('Input Dataset'), solidHeader = T, status = 'primary', collapsible = T, 
        helpText("Default max. file size is 5 MB. Please upload both files for analysis in csv format."), 
        fileInput("file1","Upload the first file"), 
        fileInput("file2","Upload the second file") 
      ),     
       box(height = 500, width = 12,title = tags$b('Visualize Data'), solidHeader = T, status = 'primary', 
        showOutput("myPlot", "Highcharts")     
      ) 
    ) 
    ) 
) 
) 

server.R

library(shiny) 
library(rCharts) 
# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 
    observe({ 
    file1 = input$file1 
    file2 = input$file2 
    if (is.null(file1) || is.null(file2)) { 
     return(NULL) 
    } 
    data1 = read.csv(file1$datapath) 
    data2 = read.csv(file2$datapath) 
    }) 
    output$myPlot<-renderChart2({ 
    # Prepare data 

    data1[,2] <- (data1[,2])/sum(data1[,2]) 

    # Create chart 
    a <- rCharts:::Highcharts$new() 
    a$chart(type = "column") 
    a$xAxis(categories = rownames(x)) 
    a$yAxis(title = list(text = "Normalized Intensity")) 
    a$data(data1) 
    a$set(width = 600, height = 500) 
    return(a) 
    }) 
}) 

回答

0

嘗試增加這樣的事情。請確保您檢查nrow並返回並清空Highcharts$new()對象爲renderChart2需要一個。

library(shiny) 
library(rCharts) 
# Define server logic required to draw a histogram 
shinyServer(function(input, output) { 

    data1 <- reactive({read.csv(file1$datapath)}) 
    data2 <- reactive({read.csv(file2$datapath)}) 

    output$myPlot<-renderChart2({ 
    data1 <- data1() 
    # Prepare data 
    if(nrow(data1==0)){return(Highcharts$new())} 
    data1[,2] <- (data1[,2])/sum(data1[,2]) 

    # Create chart 
    a <- rCharts:::Highcharts$new() 
    a$chart(type = "column") 
    a$xAxis(categories = rownames(x)) 
    a$yAxis(title = list(text = "Normalized Intensity")) 
    a$data(data1) 
    a$set(width = 600, height = 500) 
    return(a) 
    }) 
}) 
+0

即使進行此修改,我仍然會收到「找不到對象'file1'。」我錯過了什麼嗎? – user2657817