r - 如何在没有用户交互的情况下更新与 R Shiny 中的 `fileInput` 变量相关的文件?

标签 r file shiny shinydashboard

我正在 R 中开发一个应用程序,用户需要从他们的计算机中选择一个文件,使用 RShiny fileInput按钮。我想修改它,以便程序可以自动分配相关变量(即可以加载文件),而无需用户单击按钮并选择文件。

我面临的问题是 fileInput有4个字段,其中我只能知道3个。例如,当我加载文件时hello.csv在变量 inFile 中通过正常程序,这是我得到的:

inFile$name = hello.csv
inFile$size = 8320
inFile$type = text/csv
inFile$datapath = C:\\Users\\MyName\\AppData\\Local\\Temp\\Rtmpkh8Zcb/7d5f0ff0111d440c7a66b656/0

虽然我可以猜到第二个和第三个知道文件,但我不知道如何datapath字段已分配...

我试图声明 inFile作为 NULL全局变量,然后一一分配不同的字段,但我坚持使用最后一个。有没有其他方法可以做,比如模仿用户点击文件输入按钮并选择指定文件的行为的功能?

非常感谢。

最佳答案

如果您想要做的只是最初加载文件,则不必依赖 Shiny 函数来执行此操作。您可以只依赖 R 函数。像这样设置您的应用程序:

ui <- shinyUI(
  fileInput("inFile", label="Choose a file", multiple=F)
)

server <- shinyServer(function(input, output, session) {
  values <- reactiveValues()

  dat <- reactive({
    if (is.null(inFile$datapath)) {
      dat <- read.csv("path/to/your.csv")
      values$file_name = "your.csv"
      values$file_type = "csv"
      values$file_size = file.size("path/to/your.csv")
      values$file_path = "path/to/your.csv"
    } else {
      dat <- read.csv(inFile$datapath)
      values$file_name = inFile$name
      values$file_size = inFile$size
      values$file_type = inFile$type
      values$file_path = inFile$datapath
    }
  })
})

shinyApp(ui=ui, server=server)

在上面的代码中,Shiny 应用程序将启动并看到 inFile$datapathNULL并将加载您选择的预定义文件。它不会再次运行,直到 inFile更改,此时它将加载用户指向的文件。

希望有帮助。

更新

我将上面的代码更改为使用 reactiveValues存储需要在整个应用程序中使用的信息。如果你只是设置这些然后为 input$inFile$datapath 做一个查找/替换并替换它 values$file_path ,您的代码应该可以正常工作。

关于r - 如何在没有用户交互的情况下更新与 R Shiny 中的 `fileInput` 变量相关的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36424644/

相关文章:

r - 从时间戳中提取时间?

r - 使用 dtplyr 连接冲突列后选择

java - 立即关闭Java中的所有流

shell - 如何通过管道输出需要文件参数的命令

r - 多个 ui 元素的观察事件

R图度数分布不起作用

linux - R 核心转储去哪里了?

python - 我需要编写一个 Python 脚本来对图片进行排序,我该怎么做?

r - 为 DT 行添加 Shiny 的背景色

mysql - 发布 Shiny 应用程序时连接到数据库(Mysql)时出错