我有一个非常大的固定宽度文件,我需要使用我的Shiny应用程序阅读 . 我的程序当前结构的方式是ui.R包含一个fileInput,允许用户使用浏览器找到该文件 .

在服务器端,我只捕获文件的路径,如下所示:

path2file <- reactive({
    infile <- input$path2file
    if (is.null(infile)) return(NULL)    
    infile$datapath  
})

后续函数将该路径作为输入,并根据其布局规范读取文件 . 这一切都很好;但是当处理非常大的fwf文件时,我的程序会大大减慢,并且需要花费数小时才能使用fileInput读取文件的路径名

我怀疑fileInput实际上是在整个文件中读取,然后我的函数只返回数据路径,即使我没有明确地读取函数中的任何文件格式类型 .

我的目标是继续使用我现在构建的程序,并使用我的fileInput仅获取此文件的路径 . 我在SO上找到了这个主题,看到它是一个可能的选择 .

Getting file path from Shiny UI (Not just directory) using browse button without uploading the file

但是,我还打算尽量减少我所拥有的包依赖项的数量;这已经成为一个大问题,所以如果我必须使用额外的包,我会,但我想不惜一切代价避免这种情况 .

我尝试了这个便宜的伎俩:

path2file <- reactive({
    infile <- input$path2file
    if (is.null(infile)) return(NULL)    
    scan(infile$datapath, n = 1)
    infile$datapath  
})

认为这将是一个快速的解决方法,但它也非常慢,所以我怀疑它也不是只读n = 1.所以,我的问题是任何人都可以找到一种方法来使用fileInput来允许用户找到一个文件并且服务器端功能只捕获路径而不读取文件或尝试以任何方式解析它?更重要的是,这可以使用基本R和Shiny中的函数来完成,而不必从其他扩展包中获取函数吗?

以上是server.R文件中代码的相关部分以及ui.R文件中相关的代码部分

fileInput('path2dor', 'Choose the DOR .txt file to format',
        accept=c('text/csv', 
        'text/comma-separated-values,text/plain', '.csv')),

谢谢你的建议 .