map_df 函数有效,但在 Plumber api 内部时失败

奥切茨基

我正在通过管道工包 api 为 R 进行部署,代码本身在本地运行时完美无缺,但是当它在管道工的环境中时,它会出现以下错误 <simpleError in do.call(private$func, args, envir = private$envir): 'what' must be a function or character string>

有一个例子:

    library('tidyverse')

    #data head using dput()
    tweets <- structure(list(text = c("@dottore_marcelo @LorranParadiso @1pedroOsilva @Ronaldocampos00 @jairbolsonaro Mas quem disse que @jairbolsonaro vai resolver todos os problemas do país tem 4 anos? Ele é um ponto de inflexão, quem sabe depois de 8 anos elegeremos um rocha ou um Amoedo, pois a estrada já estará pavimentada. Vamos pensar que no longo prazo a disputa será entre liber e conser", 
"@Ideias_Radicais Opiniao sobre a Marina Silva? Geraldo Alckmin? vai fazer oq se eles ganhar as eleiçoes?", 
"@pkogos E se a Marina Silva ou o Ciro gomes ganhar?", "@pkogos A França está dominada pela mentalidade esquerdista ! Se a Marina Silva ou o Ciro Ganhar vai acontecer o mesmo", 
"@cirogomes @guilhermefpenna @geraldoalckmin @MarinaSilva @jairbolsonaro @alvarodias_ Passo. Próximo.", 
"@joaopedro27696 @marx_araujo @folha 1) Não sou robô; 2) É \"Amoêdo\" e não \"Amoado\"; 3) Não voto com base em pesquisa, e sim em ideias, currículo e histórico... @jairbolsonaro é populista"
), created_at = structure(c(1527523890, 1527799974, 1527650098, 
1527724269, 1527881693, 1528111294), class = c("POSIXct", "POSIXt"
))), row.names = c(NA, 6L), class = "data.frame", .Names = c("text", 
"created_at"))

##data for date filtering

min_data_tweet <- min(tweets$created_at)
max_data_tweet <- max(tweets$created_at)

##regex I want to group_by 
reg_twe <- c("Bolsonaro"='bolsonaro|@jairbolsonaro',
             "João Amoêdo" ='amoedo|@joaoamoedonovo',
             "Marina Silva" ='marina silva|@marinasilva')

## This is the function that works without any problem
 map_df(reg_twe, 
             ~tweets %>% 
               filter(created_at >= min_data,
                      created_at <= max_data) %>%
               summarise(regex=.x,
                         n=sum(grepl(.x, text, ignore.case = TRUE))) %>%
               mutate(portal = 'Twitter'), 
             .id="Candidato") %>%
        select(Candidato, portal, n)

#Expected output

     Candidato  portal n
1    Bolsonaro Twitter 3
2  João Amoêdo Twitter 1
3 Marina Silva Twitter 4

现在,当我把它放在一个管道工函数中时,加载它之前的所有数据,这样做:

#' mencoes por candidato
#' @param pres bolsonaro amoedo marinasilva
#' @param fonte twitter noticias
#' @param min_data format: yyyy-mm-dd
#' @param max_data 
#' @get /candidato_mencoes

cat('Running candidato_mencoes\n')

function(min_data = min_data_tweet, 
         max_data = max_data_tweet){

      map_df(reg_twe, 
             ~tweets %>% 
               filter(created_at >= min_data,
                      created_at <= max_data) %>%
               summarise(regex=.x,
                         n=sum(grepl(.x, text, ignore.case = TRUE))) %>%
               mutate(portal = 'Twitter'), 
             .id="Candidato") %>%
        select(Candidato, portal, n)

}
## I get this error
<simpleError in do.call(private$func, args, envir = private$envir): 'what' must be a function or character string>
## sometimes when tweaking the function, this warning
Warning in formals(fun) : argument is not a function

这是运行水管工.R(以前的函数)文件的函数(不同的文件)

    library('plumber')
setwd("~/path/to/plumber")

pr <- plumber::plumb("plumber.R")
pr$run(port = 2424)

要连接到 api: localhost:2424/candidato_mencoes

到目前为止,我已经读到这可能是变量作为函数名的冲突,但我无法追踪它。只有在水管工中运行时才会出现问题,所以我不确定它是否可能是一个错误。

奥切茨基

好的,错误是我的,非常简单。我想知道什么时候使用“cat()”调用了一个函数,但它在错误的地方,因为水管工没有创建一个函数。第二部分必须是这样的:

#' mencoes por candidato
#' @param pres bolsonaro amoedo marinasilva
#' @param fonte twitter noticias
#' @param min_data format: yyyy-mm-dd
#' @param max_data 
#' @get /candidato_mencoes

    function(min_data = min_data_tweet, 
             max_data = max_data_tweet){
### put this cat() inside the function.
        cat('Running candidato_mencoes\n')

          map_df(reg_twe, 
                 ~tweets %>% 
                   filter(created_at >= min_data,
                          created_at <= max_data) %>%
                   summarise(regex=.x,
                             n=sum(grepl(.x, text, ignore.case = TRUE))) %>%
                   mutate(portal = 'Twitter'), 
                 .id="Candidato") %>%
            select(Candidato, portal, n)

    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用purrr :: map_df在函数中转发参数

来自分类Dev

API请求在应用程序中失败,但在浏览器中有效

来自分类Dev

EMA函数在R数据帧上有效,但在Spark数据帧上失败-Sparklyr

来自分类Dev

让R Plumber API在POST上使用JSON

来自分类Dev

使用Docker托管R plumber API

来自分类Dev

让R Plumber API在POST上使用JSON

来自分类Dev

fibonacci在python中有效,但在Java中失败

来自分类Dev

dlopen在eclipse中失败,但在ddd上有效

来自分类Dev

命令在crontab中失败,但在终端中有效

来自分类Dev

有没有一种方法可以使用R Plumber在API中添加可选参数?

来自分类Dev

WebRequest 在本地有效,但在发布时无效

来自分类Dev

代码在将 0.0 转换为 0 时有效,但在 1.0 时失败?

来自分类Dev

检查Google Map API密钥的有效性

来自分类Dev

x86中的下划线前缀问题:从C ++函数调用NASM函数在x64中有效,但在x86中失败

来自分类Dev

循环有效,尝试 map-reduce 时出错

来自分类Dev

以下代码在我手动传递值时有效,但在解包值时失败

来自分类Dev

API调用在浏览器中有效,但在curl / wget中无效

来自分类Dev

创建新的 api 路由和文件失败,但附加到现有路由有效

来自分类Dev

前端使用API时如何有效限制查询API

来自分类Dev

前端使用API时如何有效限制查询API

来自分类Dev

导航图在Power Map中有效,但在Power View Map中不起作用

来自分类Dev

设置值jquery在跟踪中有效,但在没有跟踪时无效

来自分类Dev

Oracle DECODE语句在RHEL上失败,但在HPUX上有效

来自分类Dev

对Handler的AJAX调用在POST中失败,但在GET中有效

来自分类Dev

SQL Server登录在连接字符串中有效,但在DSN中失败

来自分类Dev

单一测试在PhantomJS中失败,但在Chrome和Firefox中有效

来自分类Dev

命令在命令行上有效,但在批处理文件中失败

来自分类Dev

查询在HeidiSQL中有效,但在C#中失败

来自分类Dev

JRuby Savon Ntlm身份验证(在Ruby中有效,但在JRuby中失败)

Related 相关文章

  1. 1

    使用purrr :: map_df在函数中转发参数

  2. 2

    API请求在应用程序中失败,但在浏览器中有效

  3. 3

    EMA函数在R数据帧上有效,但在Spark数据帧上失败-Sparklyr

  4. 4

    让R Plumber API在POST上使用JSON

  5. 5

    使用Docker托管R plumber API

  6. 6

    让R Plumber API在POST上使用JSON

  7. 7

    fibonacci在python中有效,但在Java中失败

  8. 8

    dlopen在eclipse中失败,但在ddd上有效

  9. 9

    命令在crontab中失败,但在终端中有效

  10. 10

    有没有一种方法可以使用R Plumber在API中添加可选参数?

  11. 11

    WebRequest 在本地有效,但在发布时无效

  12. 12

    代码在将 0.0 转换为 0 时有效,但在 1.0 时失败?

  13. 13

    检查Google Map API密钥的有效性

  14. 14

    x86中的下划线前缀问题:从C ++函数调用NASM函数在x64中有效,但在x86中失败

  15. 15

    循环有效,尝试 map-reduce 时出错

  16. 16

    以下代码在我手动传递值时有效,但在解包值时失败

  17. 17

    API调用在浏览器中有效,但在curl / wget中无效

  18. 18

    创建新的 api 路由和文件失败,但附加到现有路由有效

  19. 19

    前端使用API时如何有效限制查询API

  20. 20

    前端使用API时如何有效限制查询API

  21. 21

    导航图在Power Map中有效,但在Power View Map中不起作用

  22. 22

    设置值jquery在跟踪中有效,但在没有跟踪时无效

  23. 23

    Oracle DECODE语句在RHEL上失败,但在HPUX上有效

  24. 24

    对Handler的AJAX调用在POST中失败,但在GET中有效

  25. 25

    SQL Server登录在连接字符串中有效,但在DSN中失败

  26. 26

    单一测试在PhantomJS中失败,但在Chrome和Firefox中有效

  27. 27

    命令在命令行上有效,但在批处理文件中失败

  28. 28

    查询在HeidiSQL中有效,但在C#中失败

  29. 29

    JRuby Savon Ntlm身份验证(在Ruby中有效,但在JRuby中失败)

热门标签

归档