R:如何在server.R中创建一个列表,其元素是由数字n索引的字符串?
我的server.r代码中需要一行这种类型的代码(基本上在服务器中,我会将ui.r中的所有输入安排在一个列表中):R:如何在server.R中创建一个列表,其元素是由数字n索引的字符串?,r,shiny,R,Shiny,我的server.r代码中需要一行这种类型的代码(基本上在服务器中,我会将ui.r中的所有输入安排在一个列表中): x要将所有输入变量作为列表,请尝试: x <- reactiveValuesToList(input) 要以列表形式获取所有输入变量,请尝试: x <- reactiveValuesToList(input) 看:谢谢rmk!由于某些原因,它不起作用,但这是有效的:如果input是一个列表,您也可以尝试do.call(“c”,input)来连接该列表中的所有变量。在
x要将所有输入变量作为列表,请尝试:
x <- reactiveValuesToList(input)
要以列表形式获取所有输入变量,请尝试:
x <- reactiveValuesToList(input)
看:谢谢rmk!由于某些原因,它不起作用,但这是有效的:如果input
是一个列表,您也可以尝试do.call(“c”,input)
来连接该列表中的所有变量。在这种情况下,“c”是什么意思?当我使用res Sorry时,我想你可以试试do.call(“c”,as.list(input))
。这里“c”是串联的(列表中的所有对象input
)。它可以被任何其他函数替换,如sum
等。请参阅:谢谢rmk!由于某些原因,它不起作用,但这是有效的:如果input
是一个列表,您也可以尝试do.call(“c”,input)
来连接该列表中的所有变量。在这种情况下,“c”是什么意思?当我使用res Sorry时,我想你可以试试do.call(“c”,as.list(input))
。这里“c”是串联的(列表中的所有对象input
)。它可以被任何其他函数替换,比如sum
,等等。请参见我上面的评论。无论如何谢谢你的帮助!是的,是的!谢谢我的代码的唯一区别是,您在服务器中使用“会话”。如果这能解决问题,我会尝试使用!再次:非常感谢。我将在这里告诉您它是否有效。我复制粘贴并简化了另一段代码。此代码中不需要会话
。现在已删除。实际上,如果您不介意共享,我可能对整个代码感兴趣,因为我正在尝试学习updateSliderInput(),这可以帮助我了解您如何链接三个滑块。关于最初的问题:我想我知道为什么。输入是一个复杂的动物,因为它包括一些字段(1到n)和一些按钮(也包括1到n),我还不知道整个内容的结构如何(如果您有兴趣,请参阅我上面的代码片段链接)。这可能就是为什么我需要特别提到这些字段,而这只是一个写得更简洁的问题请参见我上面的评论。无论如何谢谢你的帮助!是的,是的!谢谢我的代码的唯一区别是,您在服务器中使用“会话”。如果这能解决问题,我会尝试使用!再次:非常感谢。我将在这里告诉您它是否有效。我复制粘贴并简化了另一段代码。此代码中不需要会话
。现在已删除。实际上,如果您不介意共享,我可能对整个代码感兴趣,因为我正在尝试学习updateSliderInput(),这可以帮助我了解您如何链接三个滑块。关于最初的问题:我想我知道为什么。输入是一个复杂的动物,因为它包括一些字段(1到n)和一些按钮(也包括1到n),我还不知道整个内容的结构如何(如果您有兴趣,请参阅我上面的代码片段链接)。这可能就是为什么我需要特别提到这些字段,而这只是一个写得更简洁的问题
x <- reactiveValuesToList(input)
x <- lapply(1:3, function(z) input[[paste0("field", z)]])
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))))
})
})
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")
)
))