У меня есть список фреймов данных, каждый с общим именем столбца, но другие столбцы могут отличаться. Моя цель состоит в том, чтобы отформатировать все, кроме общего столбца, так как каждый df отображается в блестящем приложении. Насколько я понял:
library(shiny)
library(DT)
library(dplyr)
set.seed(101)
df1 <- data.frame(id = runif(10), col1 = rnorm(10), col2 = rnorm(10))
df2 <- data.frame(id = runif(10), col1 = rnorm(10), col3 = rnorm(10))
df3 <- data.frame(id = runif(10), col3 = rnorm(10), col4 = rnorm(10))
df <- list(data1 = df1, data2 = df2, data3 = df3)
ui <- fluidPage(
fluidRow(
column(3, selectInput('select', 'Choose dataframe: ', choices = c('data1', 'data2', 'data3'),
selected = 1)),
column(9, DTOutput('table'))
)
)
server <- function(input, output) {
selected <- reactive({
input$select
})
col_names <- c('col1', 'col2', 'col3', 'col4')
output$table <- renderDT(
df[[selected()]] %>% formatStyle(names(.)[names(.) %in% col_names], backgroundColor = 'yellow'),
options = list(pageLength = 15))
}
shinyApp(ui=ui,server=server)
И вот ошибка, которую я получаю в консоли:
Предупреждение: ошибка в name2int: вы указали столбцы: col1, col2, но имена столбцов данных: [Нет трассировки стека]
Как мне заставить formatStyle работать с эти имена переменных столбцов?