gpt4 book ai didi

R Shiny : Subset data based on checkboxgroupinput

转载 作者:行者123 更新时间:2023-12-01 06:22:27 25 4
gpt4 key购买 nike

我想根据复选框输入动态选择的列来子集我的数据。有什么方法可以让我的输入文件在我的代码中全局可用以便可以轻松执行进一步的操作。

以下是我的代码:

服务器.R

    library(shiny)

shinyServer(function(input, output) {

dInput <- reactive({
inFile <- input$file1
if (is.null(inFile))
return(NULL)

finput <- read.csv(inFile$datapath, header=TRUE, sep=',',quote="'")
fheaders <- names(finput)
return(fheaders)
})


output$choose_columns <- renderUI({
checkboxGroupInput("columns", "Choose columns",
choices = dInput(),
selected = NULL)
})


# to observe in environment which columns are selected
observe({ print(input$columns) })


output$data_table <- renderTable({
# If missing input, return to avoid error later in function
if(is.null(input$file1))
return()

# Get the data set
dat <- get(input$file1)

# Keep the selected columns
dat <- dat[, input$columns, drop = FALSE]

# Return first 20 rows
head(dat, 20)
})


})

ui.R

library(shiny)

# Define UI for application
shinyUI(fluidPage(

# Application title
titlePanel("Subset a table"),


sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),

uiOutput("choose_columns")
),

mainPanel(
tableOutput("data_table")
)
)
))

显示 tableOutput("data_table") 时出现以下错误

Error : invalid first argument    

最佳答案

我认为您的 dInput 需要一个 reactive 并在您的过滤数据上再添加一个。然后,您可以使用 data_table()(与 ())进行进一步的操作。下面的(单个文件)代码在我的机器上运行良好。我还删除了 observe(无用)并更改了 dInput 返回的内容(实际文件而不是 colnames)。

    library(shiny)

server <- shinyServer(function(input, output) {

dInput <- reactive({
inFile <- input$file1
if (is.null(inFile))
return(NULL)
else
return(read.csv(inFile$datapath, header=TRUE, sep=',',quote="'"))
})


output$choose_columns <- renderUI({
cn <- colnames(dInput())
selectInput("columns", "Choose columns",
choices = cn,
selected = cn,
size=10,
multiple=TRUE, selectize=FALSE)
})

data_table <- reactive({
# If missing input, return to avoid error later in function
if(is.null(input$file1))
return(NULL)

# Get the data set
dat <- dInput()

# Keep the selected columns
dat[, input$columns, drop = FALSE]
})

output$data_table <- renderTable(data_table())

})


# Define UI for application
ui <- shinyUI(fluidPage(

# Application title
titlePanel("Subset a table"),


sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose CSV File',
accept=c('text/csv',
'text/comma-separated-values,text/plain',
'.csv')),

uiOutput("choose_columns")
),

mainPanel(
h3("Filtered table"),
tableOutput("data_table")
)
)
))

shinyApp(ui, server)

这是你想要的吗?

关于R Shiny : Subset data based on checkboxgroupinput,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com