2017-12-18 215 views
0

我一直在尝试开发一种有选择性输入的交互式Boxplot Shiny。使用Shiny制作boxplot交互式

当前代码:

library(shiny) 

shinyUI(fluidPage(

    titlePanel("Sample 1"), 

    sidebarLayout(
    sidebarPanel(
     selectInput("p", "Choose your salaries", choices = c("low"='a',"mid"='b',"high"='c',"riches!"='d'), selected = 4) 
    ), 
    mainPanel(
     plotOutput("boxplot") 
    ) 
) 


)) 



library(shiny) 
read.csv("Salaries.csv") 

Categories <- cut (Salaries$TotalPay, breaks = c(0,36466,73678,104359,567595), labels = c("low","mid","high","riches!")) 

shinyServer(function(input, output){ 

    output$boxplot <- renderPlot({ 

    if(input$p=='a'){ 
     i<"1" 

    } 

    if(input$p=='b'){ 
     i<-"2" 
    } 

    if(input$p=='c'){ 
     i<-"3" 
    } 

    if(input$p=='d'){ 
     i<- "riches!" 
    } 


    boxplot(TotalPay~Categories[i]) 

    }) 
}) 

我不能让箱线图来在UI中所做的选择反应。我怀疑它与水平做,因为当我打电话:

> Categories["riches!"] 
[1] <NA> 
Levels: low mid high riches! 

' 我是否需要因素都增加了这些?或者我完全错过了这一点? 在此先感谢!

+0

您是否将您的csv文件分配给数据框?在我看来,你失踪了: 薪水< - read.csv(“Salaries.csv”) –

回答

0

看看如何access the column by name。下面的示例与mtcars数据集

library(shiny) 

ui <- fluidPage(
    selectInput("p","p",choices = names(mtcars)), 
    plotOutput("myplot")) 

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

    output$myplot <- renderPlot({ 
    boxplot(mtcars[,input$p]) 
    }) 
} 

shinyApp(ui, server) 
+0

谢谢猪肉,我会试试看,并且会回复你 – BadLuckNick

+0

嘿猪肉, 试过了,它给了我:错误$操作者为原子矢量无效.. ' 库(有光泽) read.csv( “Salaries.csv”) 类别< - 削(薪金$ TotalPay,断裂= C(0,36466,73678,104359 ,567595),标签= C( “低”, “中”, “高”, “财富!”)) shinyServer(功能(输入,输出){ 输出$箱线图< - renderPlot({ 箱线图(TotalPay [,类别$ P]) }) }) ' – BadLuckNick

+0

ü得到错误,因为ü没有列名为“ ”分类$ P“',你的子集需要像' ”低“ ''或'“mid”'因为你有那些列名! –