如何解决如何在Shiny中保存无功值?
我想从用户输入生成一个字符串,然后将其用于其他功能。我尝试使用reactiveValues
,但无法正常工作。我应该在某个地方添加observeEvent
使其起作用,还是应该做其他事情?我不知道。
具体来说,我想从此最终函数生成一个字符串,稍后再在另一个函数中使用
output$out <- renderPrint({
invisible(lapply(handler(),function(handle) {
cat(paste0(paste0(handle(),collapse = " "),"\n"))
}))
})
我尝试使用此
values1 <- reactiveValues(invisible(lapply(handler(),function(handle) {
cat(paste0(paste0(handle(),"\n"))
})))
但这没用。
我希望我的最终字符串看起来像,例如"LV1 ~ x1+x2+ x3\nLV2 ~ x4+x5+x6"
更具体地说,我想将输出存储为字符串(我认为现在将其保存为列表):
这是代码
library(shiny)
library(lavaan)
newlist <- as.list(c("LV1","LV2","x1","x2","x3","x4","x5","x6"))
symbol <- as.list(c("=~","~"))
row_ui <- function(id) {
ns <- NS(id)
fluidRow(
column(2,uiOutput(ns("ui_placeholder"))),column(2,uiOutput(ns("ui_placeholder3"))),uiOutput(ns("ui_placeholder2")))
)
}
row_server <- function(input,output,session) {
return_value <- reactive({paste(input$variable1,input$symbol1,paste(input$variable2,collapse = "+"))})
ns <- session$ns
output$ui_placeholder <- renderUI({
selectInput(ns("variable1"),"LV:",choices = c(' ',newlist),selected = NULL)
})
output$ui_placeholder2 <- renderUI({
selectInput(ns("variable2"),"Ind:",names(HolzingerSwineford1939)),selected = NULL,multiple = TRUE)
})
output$ui_placeholder3 <- renderUI({
selectInput(ns("symbol1"),"Type",symbol),selected = NULL)
})
list(return_value = return_value)
}
ui <- fluidPage(
div(id="placeholder"),actionButton("addLine","+ LV"),verbatimTextOutput("out"),verbatimTextOutput("listout5")
)
server <- function(input,session) {
handler <- reactiveVal(list())
observeEvent(input$addLine,{
new_id <- paste("row",input$addLine,sep = "_")
insertUI(
selector = "#placeholder",where = "beforeBegin",ui = row_ui(new_id)
)
handler_list <- isolate(handler())
new_handler <- callModule(row_server,new_id)
handler_list <- c(handler_list,new_handler)
names(handler_list)[length(handler_list)] <- new_id
handler(handler_list)
})
output$out <- renderPrint({
invisible(lapply(handler(),"\n"))
}))
})
}
shinyApp(ui,server)
解决方法
制作一个单独的反应对象,您可以在renderPrint()
中使用它。例如
outformula <- reactive({
paste(sapply(handler(),function(handle) {
paste0(handle(),collapse = " ")
}),collapse="\n")
})
output$out <- renderPrint({
cat(outformula())
})
然后,您可以在需要的任何地方使用outformula()
的值作为字符值。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。