这可能是一个非常愚蠢的问题。 但是我已经把头包裹了一个早上但没有用。
基本上,我从多个选择输入获得用户输入,假设用户输入是:
"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
答案 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可以与该变量进行交互。