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

Sam*_*oth 6 r shiny

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

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

看下面的代码:

 file_info<-reactive({

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

   })
Run Code Online (Sandbox Code Playgroud)

但是,file_info()只包含file_name,这迫使我编写另一个反应函数来获取上传的数据:

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

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

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

小智 4

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

myReactive({
  # does stuff

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

.tmp <- myReactive()
x <- .tmp$val1
y <- .tmp$val2
Run Code Online (Sandbox Code Playgroud)