2016-01-08 32 views
2

我有一個使用R編程語言的Jupyter Notebook。我想在此R筆記本中撥打javascript functions我可以從R jupyter筆記本中調用自定義JavaScript

我知道有一種方法可以做到這一點,因爲有可以與R調用基於JavaScript庫,但我找不到包裝的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> 
""") 
相關問題