Shiny中的加权表输出

时间:2017-12-16 12:55:54

标签: r shiny survey

我正在尝试创建一个闪亮的应用程序,使用svytable为我在数据集中感兴趣的变量生成加权表。但是,我没有得到任何输出,返回错误“对象'输入'未找到”。这是复制我的问题的代码。

df <- data.frame(col1 = rnorm(20, 0, 1), col2 = rnorm(20, 2, 2), w = rnorm(20, 1, .2))
df.w <- svydesign(id = ~1, data = df, weights = ~w)

ui <- fluidPage(
        selectInput("v1", "Choose column", colnames(df), selected = "col1"),
        verbatimTextOutput("table")
)
server <- shinyServer(function(input,output){
  output$table <- renderPrint({
    svytable(~input$v1, df.w)
  })
})
shinyApp(ui, server)

1 个答案:

答案 0 :(得分:0)

您收到此错误,因为input$v1是一个字符串,但svytable需要formula。您可以使用as.formula

将字符串转换为公式
library(shiny)
library(survey)

df <- data.frame(col1 = rnorm(20, 0, 1), col2 = rnorm(20, 2, 2), w = rnorm(20, 1, .2))
df.w <- svydesign(id = ~1, data = df, weights = ~w)

ui <- fluidPage(
  selectInput("v1", "Choose column", colnames(df), selected = "col1"),
  verbatimTextOutput("table")
)

server <- function(input, output){
  output$table <- renderPrint({
    myformula <- as.formula(paste0("~", input$v1))
    svytable(myformula, df.w)
  })
}

shinyApp(ui, server)