我需要在我的server.r代码中使用这一类代码(基本上在服务器中我会在列表中安排ui.r的所有输入):
x<- list(input$field1,input$field2,input$field3, etc... until n=100)
x<- x[!= is.null(x)]
h4(x)
代码在renderUI({})中使用。当我手动编写它时,它工作正常。但肯定有一种方法可以使用cat and paste(或其他函数)来更简洁地编写它。
使用以下内容不起作用,我不明白为什么:
x <- cat(paste("input$field", 1:100,",", sep = ""))
list(x)
任何帮助/建议都将受到高度赞赏
ps:我需要这个,因为我的输入是根据一个按钮生成的,所以可能是没有创建具有较大Id的字段,例如field99,我需要测试哪些字段已经创建。
干杯
答案 0 :(得分:6)
要将所有输入变量作为列表,请尝试:
x <- reactiveValuesToList(input)
,或者
x <- lapply(1:3, function(z) input[[paste0("field", z)]])
简单演示:将三个用户提供的无功输入作为列表汇总
server.R (已编辑以使用第二种方法)
library(shiny)
shinyServer(function(input, output) {
output$restable <- renderTable({
mylist <- lapply(1:3, function(z) input[[paste0("slide", z)]])
data.frame(Names=c("Slider 1", "Slider 2", "Slider 3", "Sum"),
Values=c(do.call("c", mylist), do.call("sum", mylist)))
#Values=c(do.call("c", reactiveValuesToList(input)), do.call("sum", reactiveValuesToList(input))))
})
})
<强> ui.R 强>
library(shiny)
# Define UI for application
shinyUI(pageWithSidebar(
# Application title
headerPanel("Sliders should sum to 100!"),
# Sidebar with 3 slider inputs
sidebarPanel(
sliderInput("slide1", "Slider 1: ", min = 0, max = 100, value=40, step=1),
sliderInput("slide2", "Slider 2: ", min = 0, max = 100, value = 30, step=1),
sliderInput("slide3", "Slider 3: ", min = 0, max = 100, value = 30, step=1)
),
# Create table output
mainPanel(
tableOutput("restable")
)
))