首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能清除反应性数据(上传)并在返回绘图、表等的其他函数中多次使用它?

为什么我不能清除反应性数据(上传)并在返回绘图、表等的其他函数中多次使用它?
EN

Stack Overflow用户
提问于 2021-09-20 00:05:15
回答 1查看 21关注 0票数 0

最初,我基本上只是在每次生产输出时重复req(input$file1) inFile <- input$file1,所以我厌倦了重复自己,并意识到我可以使用反应性。但是,在下面创建了这段代码之后,我总是会看到一些错误,比如Warning: Error in read_excel: unused arguments (header = input$header, stringsAsFactors = TRUE)Error in : path must be a string。我正在尝试实现它的一些代码的一个例子是下面的代码示例。

代码语言:javascript
复制
data_step1 <- reactive({ 
      inFile <- input$file1
      if(!is.null(inFile)) {
        return(NULL)
      }
      raw_data <- read_excel(inFile$datapath, header = input$header, stringsAsFactors = TRUE)
      raw_data
        
    }) # EndDataReactive

    cleaned_data <- reactive({
      # Reads Excel File Input / Cleans Raw Data
            col_names <- array(read_excel(data_step1(), sheet = 1, n_max = 1, col_names = FALSE))
            rawdata <- data.frame(read_excel(data_step1(), sheet = 1, skip = 3, col_names = FALSE))
            colnames(rawdata) <- col_names
            
            convert_data1 <- rawdata
            
            wbb1 <- convert_data1 %>% select(11:36) # The Dataframe that includes all of the key variables required for data manipulation.

            # Graph Processing with Cleaned Data
            
            wbb1$VO2 <- (wbb1$VO2)/1000   #CONVERT TO LITERS
            wbb1$VO2 <- as.numeric(wbb1$VO2)  
            wbb1$VCO2 <- (wbb1$VCO2)/1000   #CONVERT TO LITERS
            wbb1$VCO2 <- as.numeric(wbb1$VCO2)

            wbb1
    })

示例实现

代码语言:javascript
复制
output$output4 <- renderText({
        watts.vo2.lm <- lm(wbb1$Power ~ wbb1$VO2, data = cleaned_data())
        summary(watts.vo2.lm)$r.squared
        cleaned_data()
        
    }) #EndRenderText

我不知道我做错了什么。任何帮助都会很好。

EN

回答 1

Stack Overflow用户

发布于 2021-09-20 04:15:07

我认为你应该扭转这种情况,当return NULL inFileNULL的时候。

代码语言:javascript
复制
data_step1 <- reactive({ 
  inFile <- input$file1
  if(is.null(inFile)) {
    return(NULL)
  }
  raw_data <- readxl::read_excel(inFile$datapath, header = input$header, stringsAsFactors = TRUE)
  raw_data
  
})

使用req必须更短

代码语言:javascript
复制
data_step1 <- reactive({ 
  req(input$file1)
  raw_data <- readxl::read_excel(input$file1$datapath, header = input$header, stringsAsFactors = TRUE)
  raw_data
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69247942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档