Я делал что-то подобное раньше с пакетом tableHTML, фактически вы также можете добавить к нему все виды форматирования, попробуйте это, например:
Библиотеки и примеры данных
library(tableHTML)
library(shiny)
library(dplyr)
books <- read.table(text = "title authors ratings_count average_rating image_url
HP JK 10 4 https://images.gr-assets.com/books/1447303603s/2767052.jpg", header=TRUE)
books_names <- unique(books$title)
Пользовательский интерфейс (тот же пользовательский интерфейс):
ui <- fluidPage(
titlePanel(div(HTML("<b> Interested In books? </b>"))),
tabsetPanel(
tabPanel(" Book Directory ",
sidebarLayout(
sidebarPanel(
selectizeInput(inputId = "Book",
label = " Choose a Book",
choices = books_names)),
mainPanel = (tableOutput("View"))
)
)
)
)
Сервер:
server <- function(input, output) {
output$View <- render_tableHTML({
books[books$title%in% input$Book,] %>%
mutate(image = paste0('<img src="', image_url, '"></img>')) %>%
select(image,title,authors,average_rating,ratings_count) %>%
tableHTML(escape = FALSE,
rownames = FALSE,
widths = c(40, 40, 65, 120, 120)) %>%
# align the text like this
add_css_table(css = list('text-align', 'center'))
# you can also add a theme
# add_theme('scientific')
})
}
Запустите приложение:
shinyApp(ui = ui, server = server)
Вы можете отформатировать таблицу любым способомВам нравится семейство функций add_css_...
, например, add_css_table(css = list('text-align', 'center'))
выравнивает текст по центру по всей таблице.
Посмотрите на виньетки пакета , чтобы увидеть другиефункции, предлагаемые пакетом