GOOGLE ADS

пятница, 29 апреля 2022 г.

Получение ошибки с использованием функции factor() внутри реактивного выражения в блестящем приложении

Я разрабатываю блестящее приложение для регрессионного анализа. Я получаю сообщение об ошибке, когда хочу изменить некоторые переменные на фактор с помощью 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)

Комментариев нет:

Отправить комментарий

Laravel Datatable addColumn returns ID of one record only

Я пытаюсь использовать Yajra Datatable для интеграции DataTable на свой веб-сайт. Я смог отобразить таблицу, но столкнулся с проблемой. В по...