Вы можете использовать путь к данным, указанный в загруженных файлах: input$files[[1, 'datapath']]
.
Если хотите, небольшое замечание о вашей (хорошей) попытке. Функция diffr()
требует подключения к файлу, а не самого содержимого. Я тоже попал в ту же ловушку. Так что, если вы удалите readLines()
в своем коде, вы должны быть довольно близко.
Возможно, вы захотите включить тест, чтобы длина загружаемых файлов была не меньше или не превышала 2, чтобы убедиться, что приложение не падает, например, если дается только один файл.
Воспроизводимый пример:
write.csv2(
x = "diff same",
file = "test.csv"
)
write.csv2(
x = "diffhere same",
file = "test2.csv"
)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
fileInput(
inputId = "files",
label = "Choose CSV File",
multiple = TRUE,
accept = c("text/csv",
"text/comma-separated-values,text/plain",
".csv")
)
),
mainPanel(
tableOutput("contents"),
diffrOutput("exdiff")
)
)
)
server <- function(input, output) {
output$exdiff <- renderDiffr({
req(input$files)
diffr(
file1 = input$files[[1, 'datapath']],
file2 = input$files[[2, 'datapath']],
wordWrap = TRUE,
before = "f1",
after = "f2"
)
})
}
shinyApp(ui, server)