R - cat函数不起作用/总是在Shiny中返回NULL

时间:2018-04-27 07:27:18

标签: r shiny

这可能是一个非常愚蠢的问题。 但是我已经把头包裹了一个早上但没有用。

基本上,我从多个选择输入获得用户输入,假设用户输入是: "apple" "banana" "pineapple"

我需要根据用户输入从db中获取数据,比如where f.name in (xxx),所以我需要将用户输入转换为 "apple","banana","pineapple"

我引用了Comma separated vector,这在Console面板中工作得很好,但回到Shiny,结果总是NULL。(有趣的是,如果我键入在控制台中cat(pasteM),这是正确的!!)

我不知道Shiny和Console之间有什么区别。为什么Shiny总是返回NULL

quoteM <- shQuote(as.vector(input$fruits), type="cmd")
pasteM <- paste(quoteM, collapse=", ") # pasteM has value
resultM <- cat(pasteM) # resultM is always NULL 

1 个答案:

答案 0 :(得分:0)

cat(pasteM)在控制台中为您打印结果,因为这实际上是cat()正在做的事情:连接并打印。我猜测为什么它在Shiny中没有为你工作是因为变量不是在Shiny被评估的环境中创建的。为了证明这一点,我建议你将赋值运算符更改为{{1并查看它是否实际上是由于作用域环境。您的代码应如下所示:

<<-

替代方法是来自封闭函数的quoteM <- shQuote(as.vector(input$fruits), type="cmd") pasteM <- paste(quoteM, collapse=", ") # pasteM has value resultM <<- cat(pasteM) # resultM is always NULL ,因此Shiny可以与该变量进行交互。