我正在尝试将Graph放入我正在处理的Shiny项目中。我发现最方便的方法是使用Javascript API和Shinyjs包。

here详细介绍了Tableau的Javascript API。
我的脚本看起来像这样。根据说明,它是正确的,并且根据Shinyjs,函数名称必须以“ shinyjs”开头。

   function  shinyjs.init() {
    var containerDiv document.getElementById("vizContainer"),
    url = "https://public.tableau.com/profile/daniel.cuartas#!/vizhome/Indicadores_25/Pregunta";
    var viz new tableau.Viz(containerDiv, url);
}


我的Shiny ui.R中包含的代码块是这个

               ui = fluidPage(
             includeScript("https://public.tableau.com/javascripts/api/tableau-2.js"),
             useShinyjs(),
             extendShinyjs(script = "C:/Users/Antonia/Downloads/SaberDigital/init.js"),
             tags$div(id = 'vizContainer'),
                      js$init()

           )


我得到下一个错误:

Error : shinyjs: Error parsing the JavaScript file: SyntaxError: Unexpected identifier.


我做错了什么?

最佳答案

您的代码有几个问题:

1-您必须使用tags$head(tags$script())告诉浏览器加载脚本,而不是includeScript包含JS代码的脚本。

2-Shinyjs扩展功能必须像这样shinyjs.init = function()编写,为简化起见,我内联了它,而不是将其放在单独的文件中

3-您要使用的URL格式必须为https://public.tableau.com/views/YOUR-VISUALIZATION

4- shinyjs.init函数必须由服务器函数而不是ui调用

shinyApp(ui = fluidPage(
  useShinyjs(),
  tags$head(tags$script(src="https://public.tableau.com/javascripts/api/tableau-2.js")),
  extendShinyjs(text = "
shinyjs.init = function(){
var containerDiv = document.getElementById('vizContainer');
url = 'https://public.tableau.com/views/Indicadores_25/Pregunta';
var viz = new tableau.Viz(containerDiv, url);
}"),
  tags$div(id = 'vizContainer')),
      server = function(input, output, session){js$init()})

10-06 04:44