textinput并在R编程中打印这些字符串值的所有出现

时间:2016-06-22 19:16:29

标签: r shiny

我是R编程的初学者,并尝试创建一个Web应用程序。 我创建了一个文本输入(UI):

sidebarLayout(sidebarPanel(textInput('text1', 'County', value = "", width = '250px', placeholder = NULL), submitButton("Update View")), mainPanel(textOutput('cd')))

我想显示与textinput中输入的字符串匹配的表的值。示例:如果,我在alameda中输入textinput并点击提交选项,则所有与alameda匹配的值将打印在主面板中。
服务器代码如下:

server <- shinyServer(function(input, output) {
originaldata <- read.csv(file="Patient_Discharge.csv", header = TRUE, sep = ",")

output$content = renderDataTable({originaldata})

dev <- reactive({
 for (var in originaldata$County_Name) {
   if(input$text1 == var) print(var) else print("left") 
 }
})

output$cd <- renderText({paste(dev)})
})

我收到如下错误:

  

“不能强制将'封闭'强加给'character'类型的矢量'”

1 个答案:

答案 0 :(得分:0)

主要问题是您正在尝试应用“粘贴”功能。在dev上,这是一个反应变量。如果需要反应变量的值,则应将反应变量视为函数。即:粘贴(dev())将解决您的错误。但是,您还必须确保dev的反应式表达式可以返回。此时,for循环将是反应变量返回的内容。如果我要转换你的代码:

result = c()
for (var in originaldata$County_Name) {
    result <- c(result, ifelse(input$text1 == var, var, "left"))
}
return(result)