R有光泽的能反应()函数返回多个值吗?

时间:2016-04-19 10:26:09

标签: r shiny

我使用反应函数同时完成两件事:

  1. 阅读上传csv文件;
  2. 获取文件名
  3. 请参阅以下代码:

     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=",") 
     })
    

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

1 个答案:

答案 0 :(得分:0)

R中的返回值应包含在一个functionreactive中的单个对象中。但是,我建议您将您的内容收集在一个列表中,并从您的反应式的临时变量中获取返回值。然后,从此临时变量中获得所需的内容。喜欢:

myReactive({
  # does stuff

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

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