【发布时间】:2019-10-09 15:42:32
【问题描述】:
我已经编写了一个代码来在闪亮的 R 中创建一个数据表,当我单击感兴趣的行时,它应该展开并显示子行。 但是,这仅适用于我的数据表的最后一行。在前面的行中,只显示了子表的标题,而不是数据。
我的数据表: Data Table
我的输出:My result
callback = JS("table.column(1).nodes().to$().css({cursor: 'pointer'});
// Format cars object into another table
var format = function (d) {
if (d != null) {
var result = ('<table id=\"child_' + d[2] + '_' + d[3] +
'\">').replace('.', '_') + '<thead><tr>'
for (var col in d[4][0]) {
result += '<th>' + col + '</th>'
}
result += '</tr></thead></table>'
return result
} else {
return '';
}
}
var format_datatable = function (d) {
var dataset = [];
for (i = 0; i <= d[4].length - 1; i++) {
var datarow = $.map(d[4][i], function (value, index) {
return [value];
});
dataset.push(datarow)
}
var subtable = $(('table#child_' + d[2] + '_' +
d[3]).replace('.', '_')).DataTable({
'data': dataset,
'autoWidth': true,
'deferRender': true,
'info': false,
'lengthChange': false,
'ordering': true,
'paging': false,
'scrollX': false,
'scrollY': false,
'searching': false
});
};
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('⊖');
format_datatable(row.data())
}
});
")
【问题讨论】:
-
你能提供数据框吗?使用可重现的代码更容易提供帮助。
标签: javascript r shiny datatables