gpt4 book ai didi

r - Shiny 应用程序中的 "read_excel"

转载 作者:行者123 更新时间:2023-12-01 19:19:57 24 4
gpt4 key购买 nike

我有一个 Shiny 的应用程序,它使用 xlsx 包中的 read.xlsx 函数。一切正常,但我想从 readxl 更改为 read_excel,希望它会更快并且能够处理大文件。

用户界面部分:

fileInput("inputFile","Upload file...")

服务器部分:

  data <- reactive({
inFile <- input$inputFile
if (is.null(inFile)) { return(NULL) }
dataFile <- read_excel(inFile$datapath,sheet=1)
return(dataFile)
})

我收到“未知格式”错误。

inFile$datapath is "/tmp/.../60974676c7287e913d1c0dc5/0"
inFile$type is "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

问题1:有没有办法告诉read_excel这是一个xlsx类型文件?
问题2:是否可以控制上传文件的存储位置?

最佳答案

这是一个open issue与 readxl 包。当前提供的解决方法是复制文件数据路径并附加 .xlsx。这是我的机器上的一个工作示例,仅限于编辑为使用 file.rename 而不是 file.copy.xlsx 文件。

library(shiny)
library(readxl)

runApp(
list(
ui = fluidPage(
titlePanel("Use readxl"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose xlsx file',
accept = c(".xlsx")
)
),
mainPanel(
tableOutput('contents'))
)
),
server = function(input, output){
output$contents <- renderTable({
inFile <- input$file1

if(is.null(inFile))
return(NULL)
file.rename(inFile$datapath,
paste(inFile$datapath, ".xlsx", sep=""))
read_excel(paste(inFile$datapath, ".xlsx", sep=""), 1)
})
}
)
)

编辑请注意,使用 1.1.0 版本的 readxl 不再需要重命名文件。现在,以下内容对我来说没有问题。

library(shiny)
library(readxl)

runApp(
list(
ui = fluidPage(
titlePanel("Use readxl"),
sidebarLayout(
sidebarPanel(
fileInput('file1', 'Choose xlsx file',
accept = c(".xlsx")
)
),
mainPanel(
tableOutput('contents'))
)
),
server = function(input, output){
output$contents <- renderTable({

req(input$file1)

inFile <- input$file1

read_excel(inFile$datapath, 1)
})
}
)
)

关于r - Shiny 应用程序中的 "read_excel",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30624201/

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