我正在R中创建一个数据表,该数据表具有子行,手动定义的列名并且还隐藏了几列。
根据DT手册https://rstudio.github.io/DT/002-rowdetails.html中提供的示例,这似乎微不足道(即,它已经显示了如何创建子行和隐藏某些列)。但是,当我尝试添加'colnames'参数来定义非隐藏列的新列名称时,它的行为不符合预期。
我尝试删除空白列标题文本,添加其他内容以查看它是否与表中的原始列数有关。如果我取消了隐藏某些列的调用,则标题将按原样显示,但我无法删除列(它们需要隐藏),因为表已链接到使用这些隐藏列中的数据的绘图对象。
library(DT)
datatable(
cbind(' ' = '⊕', mtcars), escape = -2,
colnames = c(" ", "GEAR COLUMN", "CARB COLUMN"), # This is the only line added to the original DT example.
options = list(
columnDefs = list(
list(visible = FALSE, targets = c(0, 2, 3:10)), # Removing this line solves the header issue but then all columns are shown.
list(orderable = FALSE, className = 'details-control', targets = 1)
)
),
callback = JS("
table.column(1).nodes().to$().css({cursor: 'pointer'});
var format = function(d) {
return '<div style=\"background-color:#eee; padding: .5em;\"> Model: ' +
d[0] + ', mpg: ' + d[2] + ', cyl: ' + d[3] + '</div>';
};
table.on('click', 'td.details-control', function() {
var td = $(this), row = table.row(td.closest('tr'));
if (row.child.isShown()) {
row.child.hide();
td.html('⊕');
} else {
row.child(format(row.data())).show();
td.html('⊖');
}
});"
))
未提供错误消息,它仅显示为正常但没有所有已定义的列标题。
我怀疑这是一个相对简单的事情,对于那些有JS调用经验的人来说非常有意义,但是不幸的是,这不是我的专长。
答案 0 :(得分:1)
如果您想重命名gear
和carb
列,则可以
colnames = c("GEAR COLUMN" = "gear", "CARB COLUMN" = "carb")