質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

588閲覧

Rの変数をPythonに渡したい

shskfjh

総合スコア14

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

R

R言語は、「S言語」をオープンソースとして実装なおした、統計解析向けのプログラミング言語です。 計算がとても速くグラフィックも充実しているため、数値計算に向いています。 文法的には、統計解析部分はS言語を参考にしており、データ処理部分はSchemeの影響を受けています。 世界中の専門家が開発に関わり、日々新しい手法やアルゴリズムが追加されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/05/15 07:14

前提

VSCode上でPypeRを使ってPythonとRを連携しようとしているのですが、library(dplyr)のところでエラーを起こしているのか、その後の取得しようとしている変数(データフレーム)がNoneになってしまいます。
R側でdplyrを記述したまま、その後の変数をPython側に渡す方法ってありませんか?

実現したいこと

Rで作られた値、データフレーム等をPython側に渡したい

発生している問題・エラーメッセージ

イメージ説明

該当のソースコード

test.py

Python

1import pyper 2 3 4r = pyper.R(RCMD='R.exeのパス') 5r("source(file='test.R')") 6 7test = r.get("test_df") 8print(test) 9print(type(test))

test.R

R

1library(dplyr) 2 3test_1 <- c("A", "B", "C", "D", "E") 4test_2 <- c(20, 28, 40, 34, 50) 5test_3 <- c(158, 162, 177, 173, 166) 6test_4 <- c(51, 55, 72, 57, 64) 7 8# ↓これをPythonに渡したい。library(dplyr)を記述したまま 9test_df <- data.frame(TEST_1 = test_1, TEST_2 = test_2, TEST_3 = test_3, TEST_4 = test_4) 10 11# filter 12dplyr::filter(test_df, (TEST_1 == "TEST")) 13 14# grouping 15dplyr::group_by(test_df, TEST_1) 16 17# sort 18dplyr::arrange(test_df, desc(TEST_2)) 19plot(test_df) 20

試したこと

Rのみ動かした場合はdplyrを読み込んで表示できます
イメージ説明

補足情報(FW/ツールのバージョンなど)

Windows 10
Visual Studio Code
Python 3.10.4
PypeR 1.1.2
R 4.1.3
dplyr 1.0.9

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/05/15 11:16

Rの事情が分かりませんのでこちらに… Rも統計に強い言語と聞いています。でしたらCSV形式でのやり取りができるのではないでしょうか? CSVがサポートされているのであれば、 1. OS上のtemp領域(RAMディスクもしくはHDDやSSD等)を介して通信 2. localhost(自分自身のPC)に対してソケット通信 で行けそうです。私はやったことがないですが、PythonとC++のやり取りはこうやってやる例もある、と聞いたことがあります。 2.のPythonでの実装例は以下が参考になります。 https://code-graffiti.com/socket-communication-in-python/
melian

2022/05/15 18:07

pyper.R に dump_stdout=True を指定して実行してみて下さい。 r = pyper.R(RCMD='R.exeのパス', dump_stdout=True) 実行時のログが表示されますので、原因の手掛かりが得られるかもしれません。
shskfjh

2022/05/17 11:57

> fourteenlengthさん ソケット通信に関してはまだよくわかっていないのですが、CSV形式のやりとりでピンときました。 ありがとうございます! > melianさん dump_stdout試しましたが、いまいちエラーの詳細がわかりませんでした。情報ありがとうございます。
guest

回答1

0

自己解決

Pythonのsubprocess関数を使ってRファイルを実行 → R側でCSV出力を行う → PythonのPandasで出力されたCSVを読み込んでデータフレームに加工という方法で、本来やりたかったことが出来ました。
ありがとうございました。

投稿2022/05/17 12:04

shskfjh

総合スコア14

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問