datatable показывает только определенные столбцы

У меня есть датафрейм с относительно большим количеством столбцов.

Я хочу использовать пакет DT, чтобы отображать только несколько столбцов. Я не нашел лучшего способа сделать это, кроме аргумента fixedColumns, который допускает только числовые ссылки.

Проблема в том, что я хочу показать только, скажем, столбцы 5, 15 и 30.

Вместо того, чтобы перечислять все остальные 97 столбцов, я попробовал следующее:

 columnDefs = list(list(visible=FALSE, targets = c(-5, -15, -30)))

Очевидно, это не может скрыть все столбцы, кроме 5, 15 и 30. Полный код приведен ниже.

datatable(
  shared_df, rownames = FALSE, extensions = c('Buttons', 'FixedColumns'), class = 'cell-border stripe', options = list(
    dom = 'Bfrtip',
    scrollX = TRUE,
    fixedColumns = TRUE,
    columnDefs = list(list(visible=FALSE, targets = c(-1, -2, -3, -4, -5))),
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
  )
) 

Какие-нибудь подсказки?


person Prometheus    schedule 07.11.2017    source источник
comment
Что не так с shared_df[, c(5, 15, 30)]?   -  person pogibas    schedule 07.11.2017
comment
это не работает. Я получаю следующую ошибку: объект типа «среда» не является подмножеством. Аргумент запрашивает числовой ввод, а не фрейм данных.   -  person Prometheus    schedule 07.11.2017
comment
Просто для уточнения. Я использую shared_df ‹- SharedData $ new (dataframe) из пакета перекрестных помех. Вот почему объект не является фреймом данных.   -  person Prometheus    schedule 07.11.2017


Ответы (1)


Решил проблему так:

a <- 1:96 
remove <- c (1, 2, 3, 4, 5, 30, 31, 32, 33)

datatable(
  shared_df, rownames = FALSE, extensions = c('Buttons', 'FixedColumns'), class = 'cell-border stripe', options = list(
    dom = 'Bfrtip',
    scrollX = TRUE,
    fixedColumns = TRUE,
    columnDefs = list(list(visible=FALSE, targets = a[! a %in% remove])),
    buttons = c('copy', 'csv', 'excel', 'pdf', 'print')
  )
) %>%
  formatStyle('pl_h_interni',  color = 'white', backgroundColor = 'red', fontWeight = 'bold') %>%
  formatStyle('nov_iznos_h_interni',  color = 'white', backgroundColor = 'green', fontWeight = 'bold')  %>%
  formatStyle('star_iznos_h_interni',  color = 'white', backgroundColor = 'gray', fontWeight = 'bold')
person Prometheus    schedule 08.11.2017
comment
Вы также можете использовать: targets = seq(96)[! seq(96) %in% remove] - person Frank; 22.04.2020