作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个应用程序来分析统计模型。用户在其中放置数据集并返回模型。我想实现删除不重要的变量,但为此我需要我的文件的变量名返回到 selectInput,是否可以这样做?
library(shiny)
ui <- fluidPage(
titlePanel("-"),
sidebarLayout(
sidebarPanel(
fileInput(inputId="arquivo", "Selecione o arquivo",accept = ".csv"),
selectInput(inputId = "insi", "Selecione as variaveis não significativas", choices = names(k) ,multiple = TRUE )
),
mainPanel(
tabsetPanel(type = "tab",
tabPanel("Dados",tableOutput("dados")),
tabPanel("Ajuste", verbatimTextOutput("model"))
)
)
)
)
server <- function(input, output) {
output$dados <- renderTable({
if(is.null(input$arquivo)) return(NULL)
k <- read.csv(input$arquivo$datapath, header = TRUE, stringsAsFactors = FALSE)
if(input$header==FALSE)
{
return(k)
}
if (input$header==TRUE)
{
return(head(k))
}
})
output$model <- renderPrint({
if(is.null(input$arquivo)) return(NULL)
k <- read.csv(input$arquivo$datapath, header = TRUE, stringsAsFactors = FALSE)
v <- ncol(k)
y <- k[, 1]
h <- k[, -1]
mData <- data.frame(vY = y, mX = h)
colnames(mData) <- c("vY", paste("VX", 2:v, sep = ""))
mod <- glm(vY ~ ., data = mData, family = binomial)
print(summary(mod))
})
}
shinyApp(ui = ui, server = server)
最佳答案
请参阅我上面的评论,第一个答案并不理想,但应该适合您的目的(有关改进的答案,请参见下文):
library(shiny)
ui <- fluidPage(
titlePanel("-"),
sidebarLayout(
sidebarPanel(
fileInput(inputId="arquivo", "Selecione o arquivo",accept = ".csv"),
selectInput(inputId = "insi", "Selecione as variaveis não significativas", choices = "" ,multiple = TRUE )
),
mainPanel(
tabsetPanel(type = "tab",
tabPanel("Dados",tableOutput("dados")),
tabPanel("Ajuste", verbatimTextOutput("model"))
)
)
)
)
server <- function(input, output, session) {
output$dados <- renderTable({
if(is.null(input$arquivo)) return(NULL)
k <- read.csv(input$arquivo$datapath, header = TRUE, stringsAsFactors = FALSE)
updateSelectInput(session = session, inputId = "insi", choices = names(k))
return(k)
#if(input$header==FALSE)
#{
# return(k)
#}
#if (input$header==TRUE)
#{
# return(head(k))
#}
})
output$model <- renderPrint({
if(is.null(input$arquivo)) return(NULL)
k <- read.csv(input$arquivo$datapath, header = TRUE, stringsAsFactors = FALSE)
v <- ncol(k)
y <- k[, 1]
h <- k[, -1]
mData <- data.frame(vY = y, mX = h)
colnames(mData) <- c("vY", paste("VX", 2:v, sep = ""))
mod <- glm(vY ~ ., data = mData, family = binomial)
print(summary(mod))
})
}
shinyApp(ui = ui, server = server)
library(shiny)
ui <- fluidPage(
titlePanel("-"),
sidebarLayout(
sidebarPanel(
fileInput(inputId="arquivo", "Selecione o arquivo",accept = ".csv"),
selectInput(inputId = "insi", "Selecione as variaveis não significativas", choices = "" ,multiple = TRUE )
),
mainPanel(
tabsetPanel(type = "tab",
tabPanel("Dados",tableOutput("dados")),
tabPanel("Ajuste", verbatimTextOutput("model"))
)
)
)
)
server <- function(input, output, session) {
k <- reactive({
if(is.null(input$arquivo)) return(NULL)
k <- read.csv(input$arquivo$datapath, header = TRUE, stringsAsFactors = FALSE)
updateSelectInput(session = session, inputId = "insi", choices = names(k))
return(k)
})
output$dados <- renderTable({
req(k())
})
output$model <- renderPrint({
k <- req(k())
v <- ncol(k)
y <- k[, 1]
h <- k[, -1]
mData <- data.frame(vY = y, mX = h)
colnames(mData) <- c("vY", paste("VX", 2:v, sep = ""))
mod <- glm(vY ~ ., data = mData, family = binomial)
print(summary(mod))
})
}
shinyApp(ui = ui, server = server)
choices = ""
在 ui 中然后使用 updateSelectInput()
一次 names(k)
存在。 session
到服务器。 req()
. 关于r - 如何在 Ui 中返回服务器对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59089780/
我是一名优秀的程序员,十分优秀!