Я создаю приложение в блестящем R, где пользователи могут выбирать нужные вкладки, и под ним будут отображаться данные, относящиеся к этим вкладкам.
Например, в приведенном ниже примере приложения данные mtcars в.csv будет принят в качестве входного параметра. Пользователь может выбрать необходимые имена столбцов в поле вкладок. Эти столбцы будут созданы в виде вкладок.
Теперь я хочу показать данные, относящиеся к этому столбцу, из .csv в соответствующемtab.Say, скажем, данные из столбца 'mpg' будут показаны на вкладке 'mpg'.
Но я застрял здесь. Ценит кто-то, кто может сказать мне способ отображения данных из соответствующего столбца на соответствующей вкладке, динамически.
Примеры используемых кодов приведены ниже:
write.csv(mtcars,'mtcars.csv')
#
library(shiny)
library(plyr)
library(dplyr)
ui <- pageWithSidebar(
headerPanel = headerPanel('data'),
sidebarPanel = sidebarPanel(fileInput(
'mtcars', h4('Uplaodmtcardata in csv format')
),
uiOutput('tabnamesui')),
mainPanel(uiOutput("tabsets"))
)
server <- function(input, output, session) {
mtcarsFile <- reactive({input$mtcars})
xxmtcars <-
reactive({
read.table(
file = mtcarsFile()$datapath,
sep = ',',
header = T,
stringsAsFactors = T
)
})
tabsnames <- reactive({
names(xxmtcars())
})
output$tabnamesui <- renderUI({
req(mtcarsFile())
selectInput(
'tabnamesui',
h5('Tab names'),
choices = as.list(tabsnames()),
multiple = T
)
})
tabnamesinput <- reactive({
input$tabnamesui
})
output$tabsets <- renderUI({
req(mtcarsFile())
tabs <-
reactive({
lapply(tabnamesinput(), function(x)
tabPanel(title = basename(x), dataTableOutput(x)))
})
do.call(tabsetPanel, c(tabs()))
})
output[['mpg']] <-
renderDataTable(as.data.frame(select(xxmtcars(), mpg)))#HOW TO AVOID THIS HARD CODING..?BASED ON THE TAB NAME DATA FROM RELEVANT COLUMN IN THE CSV TO BE RETURNED.
} runApp (список (ui = ui, сервер = сервер))
#