2016-01-08 2 views
2

У меня есть Jupyter Notebook, который использует язык программирования R. Я хотел бы назвать javascript functions в этом ноутбуке R.Могу ли я вызвать пользовательский javascript из ноутбука R jupyter

Я знаю, что есть способ сделать это, потому что есть JavaScript на основе библиотеки, которые можно вызывать из R, но я не могу найти примеры оборачивать яваскрипт функции, поэтому он может быть использован Р.

Даже пример присвоения javascript R variable, а затем вызов этой переменной R был бы полезен.

ответ

1

js::js_eval() может оценить строку JavaScript внутри R. Из ?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. Счастливый взлом!

+0

Спасибо за помощь! – CodeGuyRoss

+0

Если у вас возникли проблемы с работой js_eval, для меня работало следующее: в терминале sudo gem install libv8 -v '3.16.14.3' - --with-system-v8 brew tap homebrew/versions заварить установить v8-315 В R, install.packages ("V8”) install_github (" jeroenooms/JS») Javascript теперь будет работать. js :: js_eval ("(function() {return 'foo'})()") – CodeGuyRoss

0

Я просто хотел бы добавить этот ответ в случае, если кто был заинтересован в использовании JavaScript/HTML в Jupyter R. Ниже приведен очень простой пример:

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

as.factor() удаляет кавычки, но вы можете просто назначить javascript/html переменной r и вызвать эту переменную. Например:

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

Таким образом, я нашел другой способ сделать это, используя функцию 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> 
""") 
Смежные вопросы