Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R &引用;阅读“U excel”;在一个闪亮的应用程序中_R_Shiny_Xlsx - Fatal编程技术网

R &引用;阅读“U excel”;在一个闪亮的应用程序中

R &引用;阅读“U excel”;在一个闪亮的应用程序中,r,shiny,xlsx,R,Shiny,Xlsx,我有一个闪亮的应用程序,它使用packagexlsx中的read.xlsx功能。一切正常,但我想从readxl改为read\u excel,希望它能更快地处理大文件 用户界面部分: fileInput("inputFile","Upload file...") 服务器部件: data <- reactive({ inFile <- input$inputFile if (is.null(inFile)) { return(NULL) } data

我有一个闪亮的应用程序,它使用package
xlsx
中的
read.xlsx
功能。一切正常,但我想从
readxl
改为
read\u 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)
  })
data这是readxl软件包的一个例子。这里提供的当前解决方法是复制文件数据路径并附加
.xlsx
。这是我的机器上的一个工作示例,仅限于使用
文件编辑的
.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)
            })
        }
        )
    )

为了确保用户确实上传了.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)

            ext <- tools::file_ext(inFile$name)
            file.rename(inFile$datapath,
               paste(inFile$datapath, ext, sep="."))
            read_excel(paste(inFile$datapath, ext, sep="."), 1)
         })
        }
    )
)
库(闪亮)
图书馆(readxl)
runApp(
名单(
ui=fluidPage(
titlePanel(“使用readxl”),
侧边栏布局(
侧栏面板(
fileInput('file1','Choose xlsx file',
接受=c(“.xlsx”)
)
),
主面板(
tableOutput('contents'))
)
),
服务器=功能(输入、输出){

output$contents您是否在R控制台中使用相同的输入文件尝试过它?是的,在R控制台中它可以工作。您可以使用
文件重命名它。重命名
?您可能需要手动清理,但这是必需的。
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)

            ext <- tools::file_ext(inFile$name)
            file.rename(inFile$datapath,
               paste(inFile$datapath, ext, sep="."))
            read_excel(paste(inFile$datapath, ext, sep="."), 1)
         })
        }
    )
)