【发布时间】:2018-08-02 20:20:21
【问题描述】:
我正在构建一个闪亮的仪表板,并从同一个数据集制作许多图。我不想为我选择的每个系列制作单独的服务器 output$name 对象,而是希望有一个带有变量的服务器对象,然后将一个变量传递给每个 ui 对象,以指示我希望它显示哪个系列。
ui <- dashboardPage(
fluidRow(
column(width = 6,
box(title = "Net Income", width=NULL,
dygraphOutput(outputId = "net_income", height = "300px"))
),
column(width = 6,
box(title = "Accounts Receivable", width=NULL,
dygraphOutput(outputId = "accounts", height = "300px"))
)
) # end ui
请注意,我正在创建的多个服务器对象从单个对象 fcast_data 中选择要显示的系列。我正在显示来自该数据集的 10 个图表,因此必须生成 10 个单独的服务器渲染对象。我想创建 1 个带有变量“series_name”的服务器对象,我可以从 ui 对象传递该变量以指示我要显示的系列。
server <- function(input, output) {
output$net_income <- renderDygraph({
dygraph(fcast_data %>% select(net_income), group = "my_dash")})
output$accounts_receivable <- renderDygraph({
dygraph(fcast_data %>% select(accounts_receivable), group = "my_dash")})
} # end server
有没有一种方法可以让我创建一个服务器对象 (renderDygraph),它只从我的 ui 对象 (dygraphOutput) 中获取参数来选择不同的系列来显示?我知道如何使用 selectInputs 来做到这一点,但无法弄清楚如何在 ui 对象中硬编码变量以传递给服务器。
【问题讨论】:
-
将选择函数中的列名传递给 UI 中的
selectInput()函数。然后将字符串传递给单个图 - 考虑到输入字符串中的引号,您可能需要转换为select_()。 -
@BigDataScientist 是的,这让我很感兴趣 :) 我认为这可能正是我所需要的。我会玩这个。谢谢!
-
@RyanMorton selectInput() 对象总是显示在用户界面中吗?我会试试这个,看看我是否可以使用 selectInput() 而不显示任何类型的 ui 选择元素,因为我不希望任何用户输入可用。
-
@BigDataScientist OMG,是的。这完全是我所需要的。非常感谢!!!!