R 未找到有光泽的活动对象
我想我在我闪亮的应用程序中缺少了一些关于反应的东西。这是一个MRE,它显示了我在打印R 未找到有光泽的活动对象,r,shiny,R,Shiny,我想我在我闪亮的应用程序中缺少了一些关于反应的东西。这是一个MRE,它显示了我在打印y时遇到的问题 library(shiny) ui <- fluidPage( titlePanel("Test"), textAreaInput("text", "Text", "", width = "400px"), verbatimTextOutput("text"), actionButton("do", "Run"), textOutput("result")
y
时遇到的问题
library(shiny)
ui <- fluidPage(
titlePanel("Test"),
textAreaInput("text", "Text", "", width = "400px"),
verbatimTextOutput("text"),
actionButton("do", "Run"),
textOutput("result")
)
server <- function(input, output) {
observeEvent(input$do, {
y <- reactive({
x <- ""
t <- 1
while (t < 5) {
x <- paste(input$text, x, sep=",")
t <- t + 1
}
})
})
output$result <- renderPrint({y})
}
shinyApp(ui = ui, server = server)
库(闪亮)
ui您不应该在observeEvent
或observe
调用中放置反应值。事实上,Joe Cheng建议不要将observe
或reactive
函数嵌套在它们自己或其他函数中。它们是用于不同目的的独立事物。由于您希望根据单击输入$do
的时间创建反应式y
,因此应使用eventReactive
:
server <- function(input, output) {
y <- eventReactive(input$do, {
x <- ""
t <- 1
while (t < 5) {
x <- paste(input$text, x, sep=",")
t <- t + 1
}
return(x)
})
output$result <- renderText({y()})
}
server您不应该在observeEvent
或observe
调用中放入反应值。事实上,Joe Cheng建议不要将observe
或reactive
函数嵌套在它们自己或其他函数中。它们是用于不同目的的独立事物。由于您希望根据单击输入$do
的时间创建反应式y
,因此应使用eventReactive
:
server <- function(input, output) {
y <- eventReactive(input$do, {
x <- ""
t <- 1
while (t < 5) {
x <- paste(input$text, x, sep=",")
t <- t + 1
}
return(x)
})
output$result <- renderText({y()})
}
serverI问题是对reactive()
的调用没有返回任何内容。将表达式包装在reactive
中,每次更改表达式中的reactive值时,都会将表达式的返回值指定给变量。被动值通常都是input$…
变量,以及存储在reactiveValues()
对象中的变量
如果我没弄错,每次按下“运行”按钮时,您都要更改并打印y
。将其保存到reactiveValue()
集合(类似于列表),然后将其放入renderPrint
函数中
根据您的代码,我估计您希望y
成为while循环后x
的值
library(shiny)
ui <- fluidPage(
titlePanel("Test"),
textAreaInput("text", "Text", "", width = "400px"),
verbatimTextOutput("text"),
actionButton("do", "Run"),
textOutput("result")
)
server <- function(input, output) {
values <- reactiveValues()
observeEvent(input$do, {
x <- ""
t <- 1
while (t < 5) {
x <- paste(input$text, x, sep=",")
t <- t + 1
}
values$y <- x
})
output$result <- renderPrint({values$y})
}
shinyApp(ui = ui, server = server)
库(闪亮)
uiI问题是对reactive()
的调用没有返回任何内容。将表达式包装在reactive
中,每次更改表达式中的reactive值时,都会将表达式的返回值指定给变量。被动值通常都是input$…
变量,以及存储在reactiveValues()
对象中的变量
如果我没弄错,每次按下“运行”按钮时,您都要更改并打印y
。将其保存到reactiveValue()
集合(类似于列表),然后将其放入renderPrint
函数中
根据您的代码,我估计您希望y
成为while循环后x
的值
library(shiny)
ui <- fluidPage(
titlePanel("Test"),
textAreaInput("text", "Text", "", width = "400px"),
verbatimTextOutput("text"),
actionButton("do", "Run"),
textOutput("result")
)
server <- function(input, output) {
values <- reactiveValues()
observeEvent(input$do, {
x <- ""
t <- 1
while (t < 5) {
x <- paste(input$text, x, sep=",")
t <- t + 1
}
values$y <- x
})
output$result <- renderPrint({values$y})
}
shinyApp(ui = ui, server = server)
库(闪亮)
在这个基本示例中,如果您在输入框中键入“help”,我想运行并打印x
,这将是help,help,help,help,
,如果您键入“help”,我正在创建一个与我真正想要的内容断开连接的反应式y
,这是这个基本示例中反复粘贴的x
在输入框text
中,我想运行并打印x
,这将是help,help,help,
我正在创建一个与我真正想要的内容断开的反应式y
,它是迭代粘贴的x
啊,ok@tbradley。这很有帮助。啊,好的@tbradley。这很有帮助。