我可以从 R jupyter 笔记本中调用自定义 javascript

Can I call custom javascript from an R jupyter notebook

我有一个使用 R 编程语言的 Jupyter Notebook。我想在这个 R 笔记本中调用 javascript functions

我知道有一种方法可以做到这一点,因为可以从 R 调用基于 javascript 的库,但我找不到任何包装 javascript 函数的示例,所以它可以被R使用。

即使是将 javascript 分配给 R variable 然后调用该 R 变量的示例也会有所帮助。

js::js_eval() 可以在 R 中评估 JavaScript 的字符串。来自 ?js::js_eval:

# Stateless evaluation
js_eval("(function() {return 'foo'})()")

对于更复杂的 JavaScript 操作,请查看 V8,它可以让您为多行保留一个 JavaScript 实例。来自 ?V8::v8:

# Create a new context
ctx <- v8();

# Evaluate some code
ctx$eval("var foo = 123")
ctx$eval("var bar = 456")
ctx$eval("foo+bar")

最终,除了小技巧之外,任何事情都会让人非常沮丧,但它确实有效。如果你聪明的话,你可能会获取整个脚本,但我不确定它是否值得,除非有一些绝对只能在 JavaScript 中完成的事情。快乐黑客!

我只是想添加这个答案,以防有人对在 Jupyter R 中使用 javascript/html 感兴趣。以下是一个非常基本的示例:

test="<input type=\"file\" id=\"myFile\"/>"
as.factor(test)

as.factor() 删除了引号,但您基本上可以将 javascript/html 分配给 r 变量并调用该变量。例如:

test="<input type=\"file\" id=\"myFile\"/>"
test

所以我找到了另一种方法,即使用 HTML 函数。这是一个通过单击文本显示和隐藏单元格中的代码的示例。

from IPython.core.display import HTML
HTML("""
 <style>
     // add your CSS styling here
 </style>
 <script>
     var code_show=true; //true -> hide code at first

     function code_toggle() {
         $('div.prompt').hide(); // always hide prompt

         if (code_show){
             $('div.input').hide();
         } else {
             $('div.input').show();
         }
         code_show = !code_show
     }
     $( document ).ready(code_toggle);
 </script>
 <a href="javascript:code_toggle()" 
     style="text-decoration:none; background-color: none;color:black;">
     <h1 align="center">Example</h1>
 </a>
""")