#r #shiny #render #lapply
#r #блестящий #визуализация #lapply
Вопрос:
У меня есть некоторые данные, подобные этому subexample
structure(list(monthyr = structure(c(17287, 17287, 17287, 17287,
17287, 17287, 17287, 17287, 17287, 17287, 17287, 17287, 17287,
17287, 17287, 17287, 17287, 17287), class = "Date"), Location = c("TAI",
"NAM", "LUI", "HEE", "BRA", "KEI", "TAI", "NAM", "LUI", "HEE",
"BRA", "KEI", "TAI", "NAM", "LUI", "HEE", "BRA", "KEI"), ID = structure(c(-719050,
-718685, -718320, -717954, -717589, -717224, -719050, -718685,
-718320, -717954, -717589, -717224, -719050, -718685, -718320,
-717954, -717589, -717224), class = "Date"), Type = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L), .Label = c("Industrial.compound", "Pesticide", "Pharmaceutical"
), class = "factor"), value = c(0.885230769230769, 1.9203125,
3.26635, 0.950052631578947, 2.87133333333333, 3.194775, 0.0823076923076923,
0.190833333333333, 0.467142857142857, 0.58173125, 0.1375, 0.3777475,
0.0215555555555556, 0.240236363636364, 0.340790909090909, 0.150083333333333,
0.103333333333333, 0.2665)), row.names = c(29L, 65L, 107L, 149L,
194L, 237L, 279L, 315L, 357L, 399L, 444L, 487L, 529L, 565L, 607L,
649L, 694L, 737L), class = "data.frame")
>
Я использовал streamgraph и пакет shiny для создания streamgraph с заголовком
Я использовал это
library(streamgraph)
library(dplyr)
library(shiny)
ui = shinyUI(fluidPage(
h3("Title Example", style="text-align:center"),
streamgraphOutput('sg1')
))
server = function(input, output) {
sgexample<-streamgraph(subexample, "Type","value", "ID" )%>%
sg_legend(show=TRUE, label="Parameter: ")%>%
sg_axis_x(1, "ID")%>% sg_axis_y(0)
output$sg1 <- renderStreamgraph(sgexample)
}
shinyApp(ui = ui, server = server)
Я использовал это только для одного графика.
Теперь у меня есть список фреймов данных, подобных приведенному выше, и я хотел бы воспроизвести рендеринг для каждого фрейма данных из списка.
Мне удалось получить графики потоков для списка с
lapply(subexample1, function (x) x %>% streamgraph("Type","value", "ID" )%>%
sg_legend(show=TRUE, label="Parameter: ")%>%
sg_axis_x(1, "ID", "%Y")%>% sg_axis_y(0))
Но я не уверен, как изменить раздел пользовательского интерфейса.
Можете ли вы мне помочь?
Ответ №1:
Как элементы пользовательского интерфейса, так и реализации серверной логики могут быть обернуты в lapply()
.
subexample1 <- replicate(3, subexample, simplify = FALSE)
ui = shinyUI(fluidPage(
h3("Title Example", style = "text-align:center"),
lapply(seq_along(subexample1), function(i) streamgraphOutput(paste0("sg", i)))
))
make_streamgraph <- function(x)
x %>%
streamgraph("Type", "value", "ID") %>%
sg_legend(show = TRUE, label = "Parameter: ") %>%
sg_axis_x(1, "ID", "%Y") %>%
sg_axis_y(0)
server = function(input, output) {
lapply(seq_along(subexample1), function(i) {
output[[paste0("sg", i)]] <- renderStreamgraph({
make_streamgraph(subexample1[[i]])
})
})
}
shinyApp(ui = ui, server = server)
Комментарии:
1. Пожалуйста, объясните любые изменения для OP и будущих читателей и избегайте ответа только с кодом.