Ich versuche eine kleine glänzende App, wobei ich eine CSV-Datei aus dem lokalen Verzeichnis lade und dann bestimmte Spalten aus dem Datenrahmen auswähle und diesen Teildatensatz zur weiteren Datenanalyse verwende.Shiny Wie dynamisch Spalten des importierten Datensatzes zur weiteren Analyse ausgewählt werden können
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
fileInput("dataset", "Choose CSV File",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")),
# Include clarifying text ----
#helpText(em("Note: This app requires file in csv format only!!")),
helpText(em("Note:Select all the inputs and click on button as given below to exectute the app")),
# Input: Checkbox if file has header ----
checkboxInput("header", "Header", TRUE),
# Input: Select separator ----
radioButtons("sep", "Separator",
choices = c(Comma = ",",
Semicolon = ";",
Tab = "\t"),
selected = ","),
selectInput("select", "Select columns to display", names(datasetInput), multiple = TRUE),
actionButton("update", "Update Data set", class = "btn-primary",style='padding:4px; font-size:120%')
),
# Show a plot of the generated distribution
mainPanel(
h2('The Mydata'),
dataTableOutput('mytable')
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
datasetInput <- eventReactive(input$update, {
validate(need(input$dataset != "", "Please select a data set in csv format only!!!"))# custom error message on opening the app
read.csv(input$dataset$datapath,
header = input$header,
sep = input$sep)
}, ignoreNULL = FALSE)
dataset <- reactive({
df_input<-datasetInput()
df_input$x<-NULL
df_input
})
output$mytable = renderDataTable({
columns = names(dataset)
if (!is.null(input$select)) {
columns = input$select
}
dataset[,columns,drop=FALSE]
})
}
# Run the application
shinyApp(ui = ui, server = server)
In einigen SO Antworten suchen, bekam ein paar; eine wie unten angegeben:
shiny allowling users to choose which columns to display
Aber diese Antwort ist der Datensatz vordefinierte; Ich möchte dem Benutzer seinen eigenen Datensatz herunterladen.
ich die folgende Störung erhalte:
Error in lapply(obj, function(val) { : object 'datasetInput' not found
ich irgendwo denke ich, eine observeEvent Funktion verwenden?
Der Fehler tritt aufgrund des 'choices' Argument der' selectInput' zu bekommen. 'datasetInput' existiert nicht, während die Benutzeroberfläche der App gerendert wird. –
@Imran Ali Ich weiß .... muss wissen, wie kann ich die hochgeladene CSV-Datei verbinden und die Spalten der hochgeladenen Datei anzeigen ..... Was die ID ID im 'selectInput' Argument – Nishant
shud sein, müssen Sie dynamisch 'renderUI'. [Dynamischer selectInput in R shiny] (https://stackoverflow.com/questions/34080629/dynamic-selectinput-in-r-shiny) könnte Ihnen beim Einstieg helfen. –