我在R中创建了一个datatable,它有子行,手动定义的列名,还隐藏了一些列。
基于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调用经验的人来说非常有意义,但不幸的是这不是我的强项。
发布于 2019-07-13 00:45:38
如果要重命名gear和carb列,可以执行以下操作
colnames = c("GEAR COLUMN" = "gear", "CARB COLUMN" = "carb")https://stackoverflow.com/questions/57010626
复制相似问题