web-dev-qa-db-ja.com

RおよびPython 1つのJupyterノートブック

同じJupyterノートブックでRおよびPythonコードを実行することは可能ですか?利用可能なすべての代替手段は何ですか?

  1. Jupyterでr-essentialsをインストールし、Rノートブックを作成します。
  2. Rpy2をインストールし、rmagic関数を使用します。
  3. ビーカーノートを使用します。

上記の3つのオプションのうち、PythonおよびRコードスニペット(変数と視覚化の共有)を実行するのに信頼できるものはどれですか?

36

はい、可能です! rpy2を使用します。

pip install rpy2でrpy2をインストールできます

次に、いずれかのセルで%load_ext rpy2.ipythonを実行します。 (これは一度だけ実行する必要があります。)

これで、次のことができるようになりました。

Pythonセル:

# enables the %%R magic, not necessary if you've already done this
%load_ext rpy2.ipython

import pandas as pd
df = pd.DataFrame({
    'cups_of_coffee': [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
    'productivity': [2, 5, 6, 8, 9, 8, 0, 1, 0, -1]
})

Rセル:

%%R -i df -w 5 -h 5 --units in -r 200
# import df from global environment
# make default figure size 5 by 5 inches with 200 dpi resolution

install.packages("ggplot2", repos='http://cran.us.r-project.org', quiet=TRUE)
library(ggplot2)
ggplot(df, aes(x=cups_of_coffee, y=productivity)) + geom_line()

そして、あなたはpython Pandas DataFrame。

39
uut

python kernel(MacOS))内でjupyterノートブックでRを実行するための@uutの答えを使用すると、次のように動作しました。

%%Rは常にセルの先頭にある必要があります。そうでない場合は、次の図に示すようにエラーが発生します syntax error if %%R not at the top of the cell

以下は正しい方法です: Right way to invoke R within python kernel

また、%load_ext rpy2.ipython%%Rの前に来る必要があるため、図に示すように、その上の別のセルに配置します。

11
Abhimanu Kumar

2018年4月更新、

RStudioはパッケージも公開しています: https://blog.rstudio.com/2018/03/26/reticulate-r-interface-to-python/

そのため、Rマークダウンノートブックを使用して異なる言語で複数のコードチャンクを実行できます。これは、jupyterノートブックに似ています。

以前の投稿で、オブジェクトの基本的な表現は異なると述べました。実際には、Rとpythonの基礎となるマトリックス表現のより微妙な議論があります: https://rstudio.github.io/reticulate/articles/arrays。 html

古い投稿:

同じノートブックでRとPythonの両方の構文を使用するのは難しいでしょう。これは、主に2つの言語のオブジェクトの基本表現が異なるためです。同じノートブックでオブジェクトと異なる言語の変換を許可するようにしてください: http://beakernotebook.com/features

私は自分では使っていませんが、有望に見えます

5
Allen Wang

SoSカーネルは別のオプションです。

まだどれだけうまく機能しているかわからない、使い始めたばかり。

SoSカーネルを使用すると、同じノートブック内でPythonおよびR.

SoS Polyglot Notebook-必要な言語のインストール手順

PythonおよびRセル のノートブックの例を次に示します。


*更新:

変数の共有に関しては、マジック%useおよび%with。 「SoSは、すべてのサブカーネル間でsosで始まる名前の変数を自動的に共有します」 1

例.

Rの開始セル:

%use R
sos_var=read.csv('G:\\Somefile.csv')
dim(sos_var)

出力:

51  13

Pythonへの切り替え:

%with Python3
sos_var.shape

出力:

(51, 13)
2
rm1104