我正在尝试创建一个闪亮的应用程序,它将使用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)
你收到这个错误,因为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)