【问题标题】:R shiny can reactive() function return multiple values?R闪亮的反应()函数可以返回多个值吗?
【发布时间】:2016-08-11 11:17:44
【问题描述】:

我正在使用响应函数来同时做两件事:

  1. 读取上传的csv文件;
  2. 获取文件名

请看下面的代码:

 file_info<-reactive({

     filename <- file.choose()
     data <- read.csv(filename, skip=1)
     file_name <- basename(filename)

   })

然而,file_info() 只包含 file_name,这迫使我编写另一个反应函数来上传数据:

 Raw<- reactive({
     inFile <- input$file1

     if (is.null(inFile))
      return(NULL)
    Raw<-read.csv(inFile$datapath, header=TRUE ,sep=",") 
 })

我认为应该有另一种有效的方法来做到这一点,提前感谢您的任何建议。

【问题讨论】:

  • file_info末尾添加:list(data=data, file_name=file_name)。然后,当您调用 file_info() 时,您会得到一个包含文件名和数据的列表。
  • 如果你真的想要两者兼得,@nicola 的答案就是这样。但是您可以使用fileInput 而不是file.choose

标签: r shiny


【解决方案1】:

R 中的返回值应包含在单个对象中,在 functions 或 reactives 中。但是,我建议将您的内容收集在一个列表中,并从您的响应式变量中获取返回值。然后,从这个临时变量中得到你想要的。喜欢:

myReactive({
  # does stuff

  return(
    list(
      val1 = val1,
      val2 = val2
    )
  )
}}

.tmp <- myReactive()
x <- .tmp$val1
y <- .tmp$val2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2018-05-29
    • 2018-10-09
    • 1970-01-01
    相关资源
    最近更新 更多