2016-09-21 3 views
0

У меня есть родная функция JavaScript нижеперечисленный, который я хочу, чтобы запустить в R.Как запустить встроенную функцию JavaScript в R?

функции

JavaScript:

$('.btn') 
.click(function() { 
     var from = parseInt($('.from')[0].value) 
      , to = parseInt($('.to')[0].value) 
      , newData = []; 
     if (!isNaN(from) && !isNaN(to)) { 
      Highcharts.each(data, function (p) { 
       if (p.value >= from && p.value <= to) { 
        newData.push(p); 
       } 
      }); 

      } 
      }) 

Я хочу, чтобы связать эту функцию в моей Main R сценария, где я творю High диаграммы TreeMap с использованием блестящей.

Главной R Highchart TreeMap функция:

hc<-highchart() %>% 

    hc_title(text = "Costcenter Deviation between Quarters (A-B)") %>% 
    #hc_subtitle(text="Q1 and Q2 is default selection")%>% 
    hc_colorAxis(stops = colstops, endOnTick=FALSE,startOnTick=FALSE) %>% 
    #hc_colorAxis(minColor = '#1a9641', maxColor= '#a6d96a') %>% 
    hc_add_series(
     type = "treemap", 
     layoutAlgorithm = "squarified", 
     allowDrillToNode = T, 
     dataLabels= list(enabled= F), levelIsConstant= F, 


     levels =list( 
     list(
      level = 1, 
      dataLabels = list(
      enabled = TRUE 
     ), 
      borderWidth = 3, borderColor= 'black' 

     ) 
    ), 

     data= list_data 
    ) %>% 
    hc_tooltip(pointFormat = "<b>{point.name}</b> 
       <br>EUR: {point.actualvalue:,.2f}</br> <br> Change:{point.change}% </br>",borderWidth=1, shared= F, followPointer=F , enabled=T, borderRadius=5) %>% 
    hc_plotOptions(borderWidth=15,borderColor='#fdae61', animationLimit=1000,turboThreshold=5000) 

    hc 

Итак, есть ли какой-либо возможный путь для достижения этой цели?

+0

Проведите некоторое исследование по 'htmlwidgets'. Но уже есть два пакета Highharts htmlwidgets для R: http://jkunst.com/r/presenting-highcharter/ & https://github.com/jcizel/highchartR – hrbrmstr

+0

@hrbrmstr: я уже использую highcharter (jkunst) в моем основном R-скрипте для treemap. Но для функции «(.btn») нажмите (function() »в приведенном выше скрипте, я не могу найти эквивалент этого в R, поэтому я хочу напрямую использовать его в моем основном скрипте. – user6559913

+1

Вам действительно нужно перефразировать и добавьте более подробно к вашему вопросу. – hrbrmstr

ответ

1

Поскольку вы не предоставили полностью воспроизводимый пример с данными, я не могу ничего с этим поделать. Тем не менее, я опубликовал несколько примеров кода, которые, надеюсь, помогут вам начать работу.

library("highcharter") 
library("treemap") 
library("viridis") 
library("htmlwidgets") 

data(GNI2014) 
head(GNI2014) 

tm <- treemap(GNI2014, index = c("continent", "iso3"), 
       vSize = "population", vColor = "GNI", 
       type = "comp", palette = rev(viridis(6)), 
       draw = FALSE) 

htm <- highchart(height = 800) %>% 
    hc_add_series_treemap(tm, allowDrillToNode = TRUE, 
         layoutAlgorithm = "squarified", 
         name = "tmdata") %>% 
    hc_title(text = "Gross National Income World Data") %>% 
    hc_tooltip(pointFormat = "<b>{point.name}</b>:<br> 
      Pop: {point.value:,.0f}<br> 
      GNI: {point.valuecolor:,.0f}") 


onRender(
    htm, 
" 
function(el,x){ 
    // el will be the dom element container for our htmlwidget 
    // x will be the data and options 

    // uncomment the below line if you want to break in 
    // in your browser devtools 
    // debugger; 
$('.btn').click(function() { 
    var from = parseInt($('.from')[0].value), 
     to = parseInt($('.to')[0].value), 
     newData = []; 
    if (!isNaN(from) && !isNaN(to)) { 
     Highcharts.each(data, function (p) { 
     if (p.value >= from && p.value <= to) { 
      newData.push(p); 
     } 
     }); 
    } 
    }) 
} 
" 
) 
Смежные вопросы