我正在创建一个具有用户定义的行数和数量的dataTable。列。我想循环遍历表中的所有单元格(减去第一列,其中包含名称),并在值大于10时突出显示/更改CSS.Shiny有一个很好的示例,可以定位特定列(参见下文)。我假设我需要编写某种jQuery函数?我是一个完整的jQuery新手,所以我试了一下,而且,它显然没有用(见下文)。任何帮助将不胜感激!
针对特定列的闪亮示例:
rowCallback = I(
'function(row, data) {
// Bold cells for those >= 5 in the first column
if (parseFloat(data[0]) >= 5.0)
$("td:eq(0)", row).css("font-weight", "bold");
}'
)
我尝试编写循环遍历单元格的函数失败了:
rowCallback = I('
function(row, data) {
for each (i in 1:1000) {
if (parseFloat(data[i]) > 10.0)
$("td:eq(i)", row).css("color", "red");}
}')
答案 0 :(得分:1)
for each (i in 1:1000)
看起来不像有效的JavaScript语法。以下是使用DT包的最小示例(将来不推荐使用闪亮中的DataTables函数)。如果您不熟悉JavaScript可能会有点难以理解(我们的目标是将来make it easier)。
library(shiny)
library(DT)
shinyApp(
ui = fluidPage(dataTableOutput('foo')),
server = function(input, output) {
output$foo = renderDataTable({
datatable(iris, options = list(
rowCallback = JS(
'function(row, data) {',
'$("td", row).each(function(i) {',
'if (i == 0) return; // first column is row names',
'if (parseFloat(data[i]) >= 3.0)',
'$(this).css("color", "red");',
'});',
'}')
))
})
}
)
此时要安装 DT ,您需要:
install.packages(
c("DT", "shiny")
type = "source",
repos = c("http://yihui.name/xran", "http://cran.rstudio.com")
)
DT 在CRAN上后,您将能够正常安装CRAN中的所有内容。
答案 1 :(得分:1)
管理用它实现它(不安装DT):
rowCallback = I(
'function(row, data) {
$("td", row).each(function(i) {
if (i == 0) return; // first column is row names
if (parseFloat(data[i]) >= 10.0)
$(this).css("color", "red");
});
}'
)