问题在r中绘制excel数据 - 找不到问题对象服务器

时间:2017-11-03 21:40:21

标签: shiny

我有一个Excel电子表格,其中包含2列" Alpha1"和" Beta2"。

我想使用R闪亮在直方图上绘制每一列。以下是我的代码:

install.packages("shiny","magrittr", "ggplot2")
library(shiny)
library(magrittr)
library(ggplot2)  

data<-read.csv(file='testdata.csv', stringsAsFactors = FALSE, sep=",")

ui<-fluidPage("data", 
              #define UI, 
              titlePanel(title="Excel data"), 
              selectInput("data$Alpha1", "data$Beta2"), 
              mainPanel("excel data main panel", 
                        plotOutput("data$Alpha1"), 
                        plotOutput("data$Beta2"))
              )

server<-function(input,output) {

    output$data <- renderPlot({plot(data$Alpha1), 
                               plot(data$Beta2)})
})
shinyApp(ui=ui, server=server) 

是否有人能够指出为什么这不起作用?

我也遇到了错误:

  

shinyApp(ui = ui,server = server)中的错误:object&#39; server&#39;找不到

1 个答案:

答案 0 :(得分:0)

您的代码表明缺乏对Shiny如何工作的基本理解。所有用户界面输入(selectInputnumericInput等)都有inputId个,所有用户界面都通过input在服务器层中使用(plotOutputverbatimOutput等等)都有outputId个,通过output在服务器层中使用。这些ID是字符串,被视为data.frame中的列名称(其中data.frame为inputoutput)。

因此,您所拥有的代码存在很多错误,因此我会一次性分解您的代码并解释错误。由于我没有您的数据集,我将把它用于数据

data<-data.frame(Alpha1 = runif(100),Beta2 = rnorm(100))

?fluidPage我们看到它首先需要...并且有一些命名参数,title就是其中之一。因此,您在开头浮动的随机"data"需要变为title="data"

接下来,?selectInput需要三件事 - inputIdlabelchoicesinputId是您在服务器中引用UI对象的方式。因此,selectInput('si1','First Select Input',list(choice1="Choice 1", choice2="Choice 2")将生成一个带有可见标签的下拉框&#34; First Select Input&#34;和选择。在代码的服务器部分,您可以使用input$si1引用它。

现在,您有两个plotOutput。从?plotOutput开始,我们看到第一个参数是outputId。因此,plotOutput('Alpha1')将在服务器端引用为output$Alpha1。如果您plotOutput("data$Alpha1"),您已创建了一个必须作为

引用的标签
output$`data$Alpha1`

最后,您有两个plotOutput但只有一个renderPlot,每个plotOutput需要一个renderPlot。此外,每个ui<-fluidPage(title = "data", titlePanel(title="Excel data"), selectInput("si1","Select Column",list("Alpha1", "Beta2")), mainPanel("excel data main panel", plotOutput("Alpha1"), plotOutput("Beta2")) ) server<-function(input,output) { output$Alpha1 <- renderPlot({plot(data$Alpha1)}) output$Beta2 <- renderPlot({plot(data$Beta2)}) } shinyApp(ui=ui, server=server) 只能生成一个绘图,因此生成多个只会返回最后一个(就像R中的函数如何自动返回最后一行)。

将所有这些放在一起,您将获得以下代码:

harp