Javascript R-使用DT按行格式化
我有一个数据表,我想在一个闪亮的应用程序中按行显示不同的数字格式。我发现了用户NicE以前的解决方案,该解决方案在所有列和行都是数字时有效,如下所示: 不幸的是,我的第一列是非数字的,对于我的表,上面的解决方案在第一列中给出了NaN%的值,并且没有格式化后面的列。我肯定有办法解决这个问题,但我不懂JavaScript,所以我不知道如何正确修改rowCallback函数 以下是我目前的尝试:Javascript R-使用DT按行格式化,javascript,r,shiny,dt,Javascript,R,Shiny,Dt,我有一个数据表,我想在一个闪亮的应用程序中按行显示不同的数字格式。我发现了用户NicE以前的解决方案,该解决方案在所有列和行都是数字时有效,如下所示: 不幸的是,我的第一列是非数字的,对于我的表,上面的解决方案在第一列中给出了NaN%的值,并且没有格式化后面的列。我肯定有办法解决这个问题,但我不懂JavaScript,所以我不知道如何正确修改rowCallback函数 以下是我目前的尝试: library(DT) dat <- as.data.frame(matrix(c("# resp
library(DT)
dat <- as.data.frame(matrix(c("# respondents",20,35,18,"involvement rate",.85,.8285,.8889,"target",.80,.85,.9),nrow=3,byrow=T))
datatable(dat,options=list(
rowCallback=JS("function( row, dat, index ) {
$('td:eq(0)', row).html(dat[0] % 1 != 0 | dat[0]==0 ? (dat[0]*100).toFixed(1) +'%':dat[0]);
$('td:eq(1)', row).html(dat[1] % 1 != 0 | dat[1]==0 ? (dat[1]*100).toFixed(1) +'%':dat[1]);
}
")))
库(DT)
dat当您执行td:eq(j)
时,从j=2开始。这将丢弃0
-th列(行名称列)和1
-th列。我还添加了if(index>0)
以丢弃第一行(在Javascript中由0
索引)。可以使用数字列创建数据框
library(DT)
dat <- data.frame(
V1 = c("# respondents", "involvement rate", "target"),
V2 = c(20, 0.85, 0.8),
V3 = c(35, 0.8285, 0.85),
V4 = c(18, 0.8889, 0.9)
)
datatable(dat,options=list(
rowCallback=JS(c(
"function(row, dat, index) {",
" if(index > 0){",
" for(var j=2; j<dat.length; j++){",
" $('td:eq('+j+')', row).",
" html((dat[j]*100).toFixed(1) + '%');",
" }",
" }",
"}"
))
))
库(DT)
dat
library(DT)
dat <- data.frame(
V1 = c("# respondents", "involvement rate", "target"),
V2 = c(20, 0.85, 0.8),
V3 = c(35, 0.8285, 0.85),
V4 = c(18, 0.8889, 0.9)
)
datatable(dat,options=list(
rowCallback=JS(c(
"function(row, dat, index) {",
" if(index > 0){",
" for(var j=2; j<dat.length; j++){",
" $('td:eq('+j+')', row).",
" html((dat[j]*100).toFixed(1) + '%');",
" }",
" }",
"}"
))
))