首页 > 解决方案 > @Param Plumber 不适用于 Highcharts - R

问题描述

我在管道工 API 中的参数在 hcaes highcharts 中不起作用。我得到 dplyr 错误。

我需要使用@param 选择一列。像 df24hr[,partic24hr] 但返回错误。

我的代码...

#* Return interactive plot
#* @serializer htmlwidget
#* @param partic24h Tipo de particulado
#* @get /hist24hr


function(partic24h = 'pts'){
  
  equipamentos_ser <- dbGetQuery(con, sql_ser)
  
  equipamentos <- dbGetQuery(con, sql_eq)
  
  
  equipamentos_ser$date <- as.POSIXct(equipamentos_ser$date)
  
  equipamentos_ser$idequip <- as.factor(equipamentos_ser$idequip)  

  df24hrs <-  merge(x = equipamentos_ser[,-1] %>% timeAverage(., avg.time = "15 min", type = "idequip", fill = TRUE),
                   y = equipamentos)
  
  options(scipen = 13)
  
  df24hrs$datestamp <- datetime_to_timestamp(df24hrs$date)
  
  hchart(df24hrs, type = "scatter",
         hcaes(x = datestamp,
               y = df24hrs[,partic24h],
               group = nome)) %>%
    hc_xAxis(type = "datetime", tickmarkPlacement = "on", 
             title = list(text = 'Horário da Medição'),
             dateTimeLabelFormats = list(day = '%H:%M:%S')) %>%
    hc_yAxis(title = list(text = paste(partic24h)),
             opposite = FALSE, labels = FALSE) %>%
    hc_tooltip( pointFormat = 'Hora Medição: {point.x:%Y-%m-%d %H:%M:%S} <br>
                               Valor Medido = {point.y: .4f}')
  
  
}

错误:

<error/dplyr:::mutate_error>mutate()输入问题y。x objeto 'df24hrs' não encontrado i 输入ydf24hrs[, partic24h]. 回溯:

  1. 铅锤(文件=“hist24hr/hist24hr.R”)$运行()
  2. base::.handleSimpleError(...)
  3. dplyr:::h(simpleError(msg, call)) <simpleError in .getNamespace(pkg): tipo/comprimento inválido (symbol/0) na alocação de vetor>

标签: rhighchartsplumber

解决方案


任何不依赖于你的函数参数的东西都应该在你的函数范围之外定义,除非你想为每次调用 API 重新查询数据库。

水管工

con <- ???
sql_ser <- ???
sql_eq <- ???
options(scipen = 13)
equipamentos_ser <- dbGetQuery(con, sql_ser)
equipamentos <- dbGetQuery(con, sql_eq)
equipamentos_ser$date <- as.POSIXct(equipamentos_ser$date)
equipamentos_ser$idequip <- as.factor(equipamentos_ser$idequip)  
df24hrs <-  merge(x = equipamentos_ser[,-1] %>% timeAverage(., avg.time = "15 min", type = "idequip", fill = TRUE), y = equipamentos)
df24hrs$datestamp <- datetime_to_timestamp(df24hrs$date)

#* Return interactive plot
#* @serializer htmlwidget
#* @param partic24h Tipo de particulado
#* @get /hist24hr
function(partic24h = 'pts'){
  
  hchart(df24hrs, type = "scatter",
         hcaes(x = datestamp,
               y = df24hrs[,partic24h],
               group = nome)) %>%
    hc_xAxis(type = "datetime", tickmarkPlacement = "on", 
             title = list(text = 'Horário da Medição'),
             dateTimeLabelFormats = list(day = '%H:%M:%S')) %>%
    hc_yAxis(title = list(text = paste(partic24h)),
             opposite = FALSE, labels = FALSE) %>%
    hc_tooltip( pointFormat = 'Hora Medição: {point.x:%Y-%m-%d %H:%M:%S} <br>
                               Valor Medido = {point.y: .4f}')
  
  
}

推荐阅读