我想要一個閃亮的應用程式,當第一次運行時,它顯示一個定義為模板的資料框,然后用戶可以上傳一個新的(僅在 csv 中)來替換當前的。因此,如果用戶匯入了錯誤型別的檔案,它會生成一條訊息。這是我的代碼,導致錯誤,我不知道為什么它不起作用
library(shiny)
library(DT)
library(dplyr)
library(shiny)
ui <- fluidPage(
fileInput("upload", NULL, accept = c(".csv")),
tableOutput("head")
)
server <- function(input, output, session) {
rv <- reactiveValues(
dataframe = NULL
)
observe({
if(is.null(rv$dataframe)){
dataFrameFile <- reactive({
df <- data.frame(
x = seq(1:12),
y = rnorm(12))
rv$dataframe <- datatable(df)
return(rv$dataframe)
})
} else {
dataFrameFile <- reactive({
req(input$upload)
ext <- tools::file_ext(input$upload$name)
rv$dataframe <- switch(ext,
csv = read.csv(input$upload$datapath),
validate(" Please upload a .csv file")
)
})
}
})
output$head <- renderDT({
datatable(dataFrameFile())
})
}
shinyApp(ui, server)
uj5u.com熱心網友回復:
一些更正/簡化:
- 使用
DTOutput
而不是tableOutput
對應于renderDT
- 直接初始化
rv
- 把
validate
在renderDT
library(shiny)
library(DT)
library(dplyr)
library(shiny)
ui <- fluidPage(
fileInput("upload", NULL, accept = c(".csv")),
DTOutput("head")
)
server <- function(input, output, session) {
rv <- reactiveValues(
dataframe = data.frame(
x = seq(1:12),
y = rnorm(12))
)
observe({
req(input$upload)
ext <- tools::file_ext(input$upload$name)
rv$dataframe <- switch(ext,
csv = read.csv(input$upload$datapath),
NULL)
})
output$head <- renderDT({
validate(need(!is.null(rv$dataframe)," Please upload a .csv file"))
rv$dataframe
})
}
shinyApp(ui, server)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/535407.html
標籤:r闪亮的闪亮反应
上一篇:比較兩個資料幀并檢索值
下一篇:為每個觀察添加頻率列