【问题标题】:Shiny - Changing Variables on a Plot Based on User InputShiny - 根据用户输入更改绘图上的变量
【发布时间】:2015-08-16 07:12:54
【问题描述】:

我有一个如下所示的数据集:

Win    Gender    Score (1-4)    Weight     SHE
1      F         2              140        Y
0      M         3              155        Y
1      M         4              134        N

我正在创建一个闪亮的应用程序,它将为属于不同分数(4 组)的行创建并排条形图。我希望用户能够选择将在 x 轴上的变量(Win,SHE 的性别),并更新图表以反映每个组中该变量的计数。

我在 server.R 中尝试过以下代码:

shinyServer(function(input, output){
     output$plotOne <- renderPlot({
ggplot(data=GroupOne, aes(x=input$var))+geom_bar(stat='bin')
})
})

'var' 是我为用户根据 ui.R 中的单选按钮输入选择的变量指定的名称。我收到的错误消息是找不到输入。

我也试过上面的代码,但是用

histogram(~input$var, data=GroupOne). 

这导致了关于负长度向量和其他事情的错误。

【问题讨论】:

  • is 'GroupOne' 是上述数据集还是只是它的一个子集?
  • Score==1 的数据子集。
  • 对于这个特定的例子是空的。对于 score==2 问题是否仍然存在?
  • 所有组的问题仍然存在。数据集比较大,我只包括前三行作为例子,但所有组都包含多个条目。
  • 你能明确地说出错误的内容吗? “其他事情”可能很重要。当你说它说“找不到输入”时,你是指函数的输入,还是对象的“输入”?

标签: r shiny


【解决方案1】:

尝试使用反应函数将输入绑定到数据框中:

server <- function(input, output) {

  data <- reactive({
if ( "Win" %in% input$var) return(your_data_frame$Win)
if ( "Gender" %in% input$var) return(your_data_frame$Gender)
if ( "Score" %in% input$var) return(your_data_frame$Score)
if ( "Weight" %in% input$var) return(your_data_frame$Weight)
if ( "SHE" %in% input$var) return(your_data_frame$SHE)
  })

  output$plotOne <- renderPlot({
ggplot(data=GroupOne, aes(x=data()))+geom_bar(stat='bin')
  })
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-05-05
    • 2019-07-27
    • 2022-01-15
    • 2022-01-12
    • 2017-06-19
    • 1970-01-01
    • 2018-04-30
    • 2018-10-20
    相关资源
    最近更新 更多