闪亮的应用程序因“参数 1(类型 'closure')不能被 'cat' 处理”而失败 - 这是啥意思?

Posted

技术标签:

【中文标题】闪亮的应用程序因“参数 1(类型 \'closure\')不能被 \'cat\' 处理”而失败 - 这是啥意思?【英文标题】:Shiny app fails with "argument 1 (type 'closure') cannot be handled by 'cat'" - what does this mean?闪亮的应用程序因“参数 1(类型 'closure')不能被 'cat' 处理”而失败 - 这是什么意思? 【发布时间】:2016-07-31 01:04:52 【问题描述】:

我正在构建一个 Shiny 应用程序,它接受用户的文本输入,将最后两个单词与三元组数据帧进行比较,以预测最有可能出现的下一个单词。在 server.R 中,我试图输出的 triPred 函数的输出是一个单词。当我加载这个应用程序时,我在应用程序中输入一些文本后出现以下错误 - 'argument 1 (type 'closure') cannot be processed by 'cat' - 这似乎与 server.R 中的最后一行有关这只是一个词,我不清楚“猫”的失败之处,即连接。

服务器.R

library(stringr)

shinyServer(function(input, output) 

    triSplit <- function(input) 
            el <- unlist(str_split(input," "))
            bigram <- paste(el[length(el)-1],el[length(el)])
            return(bigram)
    

    triPred <- function(input) 
            ## pulls out end words that match the input bigram
            temp_wf_T <- wf_T[wf_T$start == triSplit(input),]
            ##Picks one of the best options at random based on count
            ans <- sample(temp_wf_T$end[temp_wf_T$count == max(temp_wf_T$count)],1)
            return(ans) 

    ##Read in a dataframe of bigrams, their possible completions, and counts of occurence
    wf_T<-readRDS("C:/Users/LTM/DataScienceCertificateCapstone/ShinyTest/data/tdm.rds")
    ##Runs the triPred function to guess the next most likely word
    ans <- reactive(triPred(input$sent))
    ##generates an output variable to display
    output$out <- renderText(ans)
    )

ui.R

library(shiny)

shinyUI(fluidPage(
    titlePanel(h1("My Shiny App", align = "center")),
    sidebarLayout(
            sidebarPanel(helpText("Please enter a sentence you would like me to complete"),
            textInput("sent", label = "sentence")),
            ##########
            mainPanel(h1("Best Guess"),
            br(),
            textOutput("out")
            )
    )
))

【问题讨论】:

【参考方案1】:

很难说,因为我无法重现您的应用,但您应该尝试:

output$out &lt;- renderText(ans()) 或只是output$out &lt;- renderText(ans())

如果你省略了(),你访问的是响应式本身,而不是它的值。有点像在函数中键入 foo 而不是 foo()

【讨论】:

这似乎修复了错误。并且是与 Shiny 合作的一个有用的学习示例。谢谢你。 天哪,几天来我一直在以不同的形式努力解决这个错误。我觉得闪亮的教程没有足够明确地提到这个具体的括号。

以上是关于闪亮的应用程序因“参数 1(类型 'closure')不能被 'cat' 处理”而失败 - 这是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

无法在闪亮的服务器上部署闪亮的应用程序

闪亮的:如何在闪亮的应用程序中添加反应栏

将闪亮应用程序库部署到闪亮服务器的最佳(标准)方法?

闪亮:从闪亮的应用程序中打开新的浏览器选项卡

闪亮的应用程序无法在闪亮的服务器上启动

在没有闪亮服务器的情况下托管和设置自己的闪亮应用程序