#r #shiny
Вопрос:
В настоящее время я могу загрузить файл .csv, но когда я пытаюсь загрузить файл .xlsx или .xls, я получаю сообщение об ошибке. «Предупреждение в read.table(файл = файл, заголовок = заголовок, sep = sep, цитата = цитата, : неполная заключительная строка найдена читаемым заголовком на ‘/var/folders/k7/s4xbp26d059b_sm6q08hl5mm0000gn/T//Rtmp6mzvQO/de97a3667d0706ae06136c4b/0.xlsx»
В настоящее время это то, что у меня есть.
library(shiny)
library(xlsx)
population <- read.xlsx("population.xlsx", 1)
fieldsMandatory <- c("selectedCountry", "modelSelect", "seedData")
labelMandatory <- function(label) {
tagList(
label,
span("*", class = "mandatory_star")
)
}
appCSS <-
".mandatory_star {color: red;}"
appCSS <- ".invisible {display:none;}"
ui <- fluidPage(
div(
class = "invisible",
titlePanel("Spatial Tracking of COVID-19 using Mathematical Models")
),
navbarPage(title = span("Spatial Tracking of COVID-19 using Mathematical Models", style = "color:#000000; font-weight:bold; font-size:15pt"),
tabPanel(title = "Model",
sidebarLayout(
sidebarPanel(
fileInput("seedData", labelMandatory ("Upload initial seed data (.csv or .xls or .xlsx)"),
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv",
".xls",
".xlsx"),
),
),
mainPanel(
tabPanel("Initial Seed Data",
tableOutput("tableSeed")),
)
)
)
)
)
server <- function(input, output, session){
}
shinyApp(ui,server)
Комментарии:
1.
read.table
ожидает csv или txt. Вам могут понадобиться пакеты.xlsx
, напримерread_excel
(readxl) илиread.excel
(отxlsx)
2. Спасибо вам за ваш ответ. Я загрузил пакет xlsx, и он по-прежнему выдает мне ту же ошибку.
3. хорошо, ваш код не воспроизводим для тестирования
4. Я обновил код, чтобы его можно было протестировать
5. Когда я скопировал ваш код, там было написано
upload complete
для xlsx или csv. Серверная часть в вашем коде пуста
Ответ №1:
Поскольку для чтения данных excel и данных csv требуются разные функции, вы можете извлечь расширение из пути к файлу и использовать эту функцию соответствующим образом.
Это может помочь —
library(shiny)
ui <- fluidPage(
fileInput("seedData", "Upload initial seed data (.csv or .xls or .xlsx)",
accept = c(
"text/csv",
"text/comma-separated-values,text/plain",
".csv",
".xls",
".xlsx")
),
tableOutput('table')
)
server <- function(input, output) {
data <- reactive({
req(input$seedData)
ext <- tools::file_ext(input$seedData$datapath)
if(ext == 'xlsx')
readxl::read_excel(input$seedData$datapath)
else
read.csv(input$seedData$datapath)
})
output$table <- renderTable(data())
}
shinyApp(ui, server)