如何在闪亮的应用程序中保存输入的文本

时间:2014-11-18 17:11:38

标签: r shiny shiny-server

我想知道如何将用户输入的文本保存在闪亮的应用程序中,以便在服务器端使用它。 我想检查用户输入的值是否有效 在用户端有这个textInput:

      textInput("entity1", "Enter a keyword")

并且在服务器端我想使用此代码检查用户的值:

entity1 <- reactive({
if(input$actb >= 0 ){
  withProgress(session, min=1, max=15, expr={
    for(i in 1:15) {
      setProgress(message = 'please wait',detail = 'it may take some time',value=i)
      Sys.sleep(0.1)
    }
  })}
smallE= "[a-z]"
keyword = as.character(input$entity1)
if(match(input$entity1, smallE))
{
  message("sorry you did not enter a valid keyword. please try again")
  Sys.sleep(1)
}
else
  entity1 <- readTweets()

})

我试图在服务器端声明一个全局变量来保存输入:

    if(match(as.vector(userInput), smallE))

userInput是一个包含entity1

值的全局变量

但是有一个错误继续显示:

  

as.vector(x,mode)出错:     不能强迫类型&#39;关闭&#39;矢量类型&#39;任何&#39;

任何可能对我有用的建议?

2 个答案:

答案 0 :(得分:2)

很难用这一大块代码来分开。我会避免调用任何全局变量,但是,您可以在用户指定输入值之前分配NULL值。

你也在调用你的对象和你的反应函数&#34; entity1&#34;,所以这有点令人困惑。

另一件事是你定义了对象&#34;关键字&#34;但是再也不用了。

我认为你可能会更好地使用%in%作为你的二进制而不是匹配()。

不确定是否有任何帮助...但您看到的错误特别是代码的as.vector()部分。我甚至不确定你为什么使用它,因为textInput字段中的任何字符串都将作为向量进入。

答案 1 :(得分:0)

存在验证功能,例如在此示例中:

telnet-daemon