How do I access the data from a file passed as parameters in a RMarkdown document?

混江龙づ霸主 提交于 2019-12-04 18:06:51

问题


Following the last example on RMarkdown's Parametrized Reports page, I am trying to use the Shiny interface to select my input file with the following code inside the YAML header:

params:  
  data:  
    input: file  
    label: 'Input dataset:'  
    value: myData.csv  

The Shiny interface shows up and I get to browse for a file, but when I try to access it further down in the R code via read.csv(file=params$data, header=TRUE), I get the following message:

Error in file(file, "rt") : cannot open the connection

How can I get to read my file?

Note: I have seen a thread where users pass the file path in a function at the time of rendering the RMarkdown document, but this is not what I am trying to do. I would just like to be able to select it from the Shiny interface.

EDIT
After playing a bit more, I think the issue is that the temporary file created when reading the file I select via the shiny interface and passed as params$data doesn't exist anymore when I try to access it.
Indeed, file.exists(params$data) returns FALSE.

So I guess my question now becomes: How do I get to read this temporary file before it is erased ?


回答1:


It doesn't look like this can be reproduced anymore.

Just for the sake of explaining how this is done:

  1. Create a new RMarkdown document
  2. Add the following yaml block to the top:

    params:  
      data:  
        input: file  
        label: 'Input dataset:'  
        value: myData.csv  
    
  3. Add the following R chunk to the document:

    ```{r data}
    cat(params$data)
    c <- read.csv(params$data)
    print(c)
    ```
    
  4. Select under the "Knit" dropdown the "Knit with Parameters" option

  5. Attach any valid CSV and click "Knit" in the Shiny parameters panel


来源:https://stackoverflow.com/questions/34436515/how-do-i-access-the-data-from-a-file-passed-as-parameters-in-a-rmarkdown-documen

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!