我想知道如何通过调用函数来更新全局变量并返回它。这是来自' server.R'的简短代码。我的ui.R由几行代码组成,用于显示输出。
sentence <- ""
result <- c()
updateSen <- function(input){
print("function executed!")
if(length(sentence) == 0){
result <<- c(result, "First")
sentence <<- paste(sentence, input, sep = " ")
}else{
result <<- c(result, input)
sentence <<- paste(sentence, input, sep = " ")
}
}
shinyServer(
function(input, output){
word <- reactive({
word <- input$tid
})
output$oid <- renderText({
paste(input$tid)
})
output$sen <- renderText({
updateSen(word())
sentence
})
}
)
我想用上面的代码做的是这个...... 1.要求用户输入单词 2.用一个用户输入的单词创建一个句子 3.运行一个功能 4.显示一个句子
然而,似乎它并没有很好地运作,并且有许多事情我不知道发生了什么。首先,我不知道为什么在程序执行期间会多次调用updateSen()函数。第二,全球变量&#39;结果&#39;第一次执行后不会改变。我希望这个变量能够更新。
答案 0 :(得分:1)
根据我的理解,一旦你应用了反应关键字,变量'result'就会自动开始变化。试试
updateSen <- reactive(function(input){
print("function executed!")
...
}
})
其次,我认为您不应该将sen
和result
等变量视为“全局”,而应该使用textInput()
函数和input$sentence
之类的变量。
我建议你阅读更多关于Shiny中反应变量和函数的内容。