如何串联闪亮的字符串列表?

问题描述

我想根据用户输入生成一个字符串列表。但是,当我使用粘贴功能时,出现此错误 object 'b' not found

我正在寻找一种返回所有输入值的方法,以便在服务器中以-

的形式显示或进一步使用这些输入值。

例如:

LV =~ x1 + x2 + x3
LV ~ LV1

以此类推。

也许我需要将用户输入的值存储为无功值。但是我不确定该怎么做。

这是完整的代码

library(shiny)

newlist <- as.list(c("LV","LV2","x1","x2","x3","x4","x5","x6"))

lvar <- function(...) {
    params <- list(...)
    stopifnot(length(params)%%2==0)
    lefts = params[seq(1,length(params),by=2)]
    rights = params[seq(2,by=2)]
    rights <- Map(paste,rights,collapse="+")
    paste(paste0(lefts," =~",rights),collapse="\n")
}

regs <- function(...) {
    params <- list(...)
    stopifnot(length(params)%%2==0)
    lefts = params[seq(1,"~",collapse="\n")
}


ui <- fluidPage(

    sidebarLayout(
        sidebarPanel(
            selectInput("variable1","Variable:",choices = c(' ',newlist),selected = NULL),selectInput("variable2",selected = NULL,multiple = TRUE),selectInput("variable3",selectInput("variable4",multiple = TRUE)
        ),mainPanel(
            verbatimtextoutput("listout1"),verbatimtextoutput("listout2"),verbatimtextoutput("listout3"),verbatimtextoutput("listout4"),verbatimtextoutput("listout5")
        )
    )
)

server <- function(input,output) {
    
    output$listout1 <- renderText({
        input$variable1
        })
    
    output$listout2 <- renderText({
        input$variable2
        })
    
    output$listout3 <- renderText({
         a <- lvar(lefts = input$variable1,rights = input$variable2)
         })
    
    output$listout4 <- renderText({
         b <- regs(lefts = input$variable3,rights = input$variable4)
         })
    
    output$listout5 <- renderText({
         paste(a,b,sep = "/n")
         })
}
shinyApp(ui = ui,server = server)

解决方法

a中的

brenderText变量分配不适用于服务器中的其他功能。
试试:

library(shiny)

newlist <- as.list(c("LV","LV2","x1","x2","x3","x4","x5","x6"))

lvar <- function(...) {
  params <- list(...)
  stopifnot(length(params)%%2==0)
  lefts = params[seq(1,length(params),by=2)]
  rights = params[seq(2,by=2)]
  rights <- Map(paste,rights,collapse="+")
  paste(paste0(lefts," =~",rights),collapse="\n")
}

regs <- function(...) {
  params <- list(...)
  stopifnot(length(params)%%2==0)
  lefts = params[seq(1,"~",collapse="\n")
}


ui <- fluidPage(
  
  sidebarLayout(
    sidebarPanel(
      selectInput("variable1","Variable:",choices = c(' ',newlist),selected = NULL),selectInput("variable2",selected = NULL,multiple = TRUE),selectInput("variable3",selectInput("variable4",multiple = TRUE)
    ),mainPanel(
      verbatimTextOutput("listout1"),verbatimTextOutput("listout2"),verbatimTextOutput("listout3"),verbatimTextOutput("listout4"),verbatimTextOutput("listout5")
    )
  )
)

server <- function(input,output) {
  
  output$listout1 <- renderText({
    input$variable1
  })
  
  output$listout2 <- renderText({
    input$variable2
  })
  
  output$listout3 <- renderText({
    #a <- 
    lvar(lefts = input$variable1,rights = input$variable2)
  })
  
  output$listout4 <- renderText({
    #b <-
    regs(lefts = input$variable3,rights = input$variable4)
  })
  
  output$listout5 <- renderText({
    paste(lvar(lefts = input$variable1,rights = input$variable2),regs(lefts = input$variable3,rights = input$variable4),sep = "\n") # changed /n to \n
  })
}
shinyApp(ui = ui,server = server)

如果您希望ab可用于其他功能,则应使用reactive values