How do I access the data from a file passed as par

2019-03-25 05:31发布

问题:

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