Shiny中的加权表输出

问题描述 投票:0回答:1

我正在尝试创建一个闪亮的应用程序,它将使用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)
r shiny survey
1个回答
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)
© www.soinside.com 2019 - 2024. All rights reserved.