R объединяет таблицы данных DT пакет и спарклайновый пакетный график с целевым значением
Я использую спарклайн-графики в таблице DT, как показано здесь: https://leonawicz.github.io/HtmlWidgetExamples/ex_dt_sparkline.html
Приведенный ниже пример манекена
library(data.table)
library(DT)
library(sparkline)
hist.A<-rnorm(100)
hist.B<-rnorm(100)
hist.C<-rnorm(100)
current.A<-rnorm(1)
current.B<-rnorm(1)
current.C<-rnorm(1)
#whisker should show full range of data
boxval.A<-paste(quantile(hist.A,probs=c(0,0.25,0.5,0.75,1)),collapse = ",")
boxval.B<-paste(quantile(hist.B,probs=c(0,0.25,0.5,0.75,1)),collapse = ",")
boxval.C<-paste(quantile(hist.C,probs=c(0,0.25,0.5,0.75,1)),collapse = ",")
data<-data.frame(Variable=c("A","B","C"),Current=c(current.A,current.B,current.C),boxplot=c(boxval.A,boxval.B,boxval.C))
data$boxWithTarget<-paste(data$boxplot,data$Current,Sep=",")
cd <- list(list(targets = 2, render = JS("function(data, type, full){ return '<span class=sparkSamples>' + data + '</span>' }")))
line_string <- "type: 'line', lineColor: 'black', fillColor: '#ccc', highlightLineColor: 'orange', highlightSpotColor: 'orange'"
box_string <- "type: 'box', raw:true, showOutliers:false,lineColor: 'black', whiskerColor: 'black', outlierFillColor: 'black', outlierLineColor: 'black', medianColor: 'black', boxFillColor: 'orange', boxLineColor: 'black'"
cb = JS("function (oSettings, json) {\n $('.sparkSeries:not(:has(canvas))').sparkline('html', { ",
line_string, " });\n $('.sparkSamples:not(:has(canvas))').sparkline('html', { ",
box_string, " });\n}")
d <- datatable(data.table(data), rownames = FALSE, options = list(columnDefs = cd,
fnDrawCallback = cb))
d$dependencies <- append(d$dependencies, htmlwidgets:::getDependency("sparkline"))
d
Я хочу использовать функцию целевого значения в блокпостах http://omnipotent.net/jquery.sparkline/
Поскольку вызов спарклайна определен на уровне столбца, я не могу передать отдельные целевые уровни в качестве аргумента.
Поэтому мне нужна функция-обертка для вызова sparkline, которая принимает в качестве аргумента 6 значений, определенных в столбце boxWithTarget (последнее значение является целевым значением), и вызывает функцию sparkline. В фиктивном коде:
sparkline_target(input,...) {
v=strsplit(input, ",")
tar=v[6]
val<-paste(v[1:5],collapse=",")
sparkline(val,target=tar,..)
}
По моему (ограниченному) пониманию, эта функция-обертка должна быть определена на уровне Java. Поскольку я понятия не имею, как этого добиться, любая помощь будет принята с благодарностью. Большое спасибо!