Я разрабатываю блестящее приложение для регрессионного анализа. Я получаю сообщение об ошибке, когда хочу изменить некоторые переменные на фактор с помощью factor()
функции.
Я хочу, чтобы пользователь выбрал переменные, которые он\она хочет изменить на фактор, selectInoput()
и использовал реактивную функцию для передачи результатов в новый фрейм данных, но результат очень странный!:(
Я помещаю упрощенную версию того, что я делаю здесь.
Потратил день и смог найти решение. Был бы признателен за вашу помощь.
x <- c( 1:5 )
y <- c( 10:14)
df <- data.frame(
x = x,
y = y
)
library(shiny)
ui <- fluidPage(
titlePanel(""),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "str", label = "which variables should be changed to factors",choices = names(df), multiple = T)
),
mainPanel(
verbatimTextOutput("output")
)
)
)
server <- function(input, output) {
df_2 <- reactive({
df[, input$str ] <- factor(df[, input$str ])
})
output$output <- renderPrint({
str( df_2() )
})
}
shinyApp(ui = ui, server = server)
Решение проблемы
Ваш код нуждается только в незначительной модификации в server
.
x <- c( 1:5 )
y <- c( 10:14)
df <- data.frame(
x = x,
y = y
)
library(shiny)
ui <- fluidPage(
titlePanel(""),
sidebarLayout(
sidebarPanel(
selectInput(inputId = "vars", label = "which variables should be changed to factors",choices = names(df), multiple = T)
),
mainPanel(
verbatimTextOutput("output")
)
)
)
server <- function(input, output) {
selected_vars <- reactive(input$vars)
df_2 <- reactive({
df[selected_vars()] <- lapply(df[selected_vars()], as.factor)
return(df)
})
output$output <- renderPrint({
str(df_2())
})
}
shinyApp(ui = ui, server = server)
Комментариев нет:
Отправить комментарий