Я столкнулся с действительно странной проблемой с R shiny. Моя цель - просто иметь возможность отображать таблицу 5 строк x 2 столбца с настраиваемой шириной столбцов и скрытием имен строк. Это простой код, который у меня есть. Обычно я фиксирую фрейм данных как третий параметр списка.
output$retail_rtg_chg_stats_table <- DT::renderDataTable({
list_var <- filteredData_retail_rtg_chg()
df <- list_var[[3]]
cat("\n\n* Dimension of df with stats -> ",dim(df),": \n")
print(df)
row.names(df) <- NULL
datatable(df,
rownames= FALSE,
options = list(#scrollX = TRUE,
pageLength = 15,
autoWidth = T,
columnDefs = list(
list(width = '200px', targets =c(1)),
list(width = '30px', targets =c(2) )
)
)
)
})
что я пытался заставить его работать? на основе обсуждения Как удалить первый столбец (индекс) из таблицы данных в R Shiny кажется, что мне нужно использовать rownames = T как параметр внутри datatable. Если я это сделаю, мое блестящее приложение полностью зависнет. На экране отображается сообщение «Обработка», и оно остается там навсегда. Затем я прочитал Как мне подавить имена строк при использовании DT :: renderDataTable в R shiny? , но я не мог понять, как это изменит мой код. Затем я прочитал Исключить имена строк из R Shiny renderTable и на основе некоторой информации, которую я добавил туда, я изменил df на
df <- data.frame(df, row.names=NULL)
Результат всегда один и тот же. Сделаю скриншот и прикреплю сюда. Столбец с именами занимает 90% экрана, и я не могу понять почему. Спасибо ![enter image description here](https://i.stack.imgur.com/zfOzj.png)
После дополнительного времени, потраченного на это, я понял, что добавление rownames = False действительно работает, и поскольку фрейм данных имеет 2 столбца, rownames = False приводит к тому, что первый столбец становится становится индексом, следовательно, target = c (2) вызывает ошибку «Обработка ...». Сказав это, я попытался изменить код на:
datatable(df,
rownames= FALSE,
options = list(#scrollX = TRUE,
pageLength = 15,
autoWidth = T,
columnDefs = list(
list(width = '70px', targets =c(0)),
list(width = '30px', targets =c(1) )
)
)
)
, но столбец rownames по-прежнему занимает 95% экрана. Не могу поверить, что они так усложнили настройку ширины столбцов. Это действительно плохо.