在r问题对象服务器中未找到问题打印excel数据



我有一个Excel电子表格,包含两列"Alpha1"one_answers"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):找不到对象"server">

您的代码表明对Shiny的工作原理缺乏基本的了解。所有UI输入(selectInputnumericInput等…)都具有通过input在服务器层中使用的inputId,而所有UI输出(plotOutputverbatimOutput等…)均具有通过output在服务器层使用的outputId。这些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")将生成一个下拉框,其中包含可见的标签"First Select Input"和选项。在代码的服务器部分,您将能够使用input$si1引用它。

现在,您有两个plotOutput。从?plotOutput中,我们可以看到第一个自变量是outputId。因此,plotOutput('Alpha1')在服务器端将被引用为output$Alpha1。如果你有plotOutput("data$Alpha1"),你就创建了一个标签,必须被引用为

output$`data$Alpha1`

最后,您有两个plotOutput,但只有一个renderPlot,每个plotOutput需要一个。此外,每个renderPlot只能生成一个图,因此生成多个图将只返回最后一个图(就像R中的函数如何自动返回最后一行一样)。

把这些放在一起,你就得到了下面的代码:

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) 

相关内容

  • 没有找到相关文章

最新更新