我是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'类型的矢量'”
答案 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)