2016-06-20 19 views
1

私は現在、単純なRスクリプトを実行するための単純なPythonコードを作成しています。 Rスクリプトは約6行だけですが、パッケージ "pracma"を使用しています。 Pythonでsubprocessesモジュールを使用すると、スクリプトを実行しますが、典型的な "Error in library(pracma)": 'pracma'というパッケージはありません。私は、非ベースパッケージがインストールされているRスクリプトを実行するための簡単なソリューションを探しています。私はあなたが何とかrpy2を使ってこれを行うことができることを知っていますが、pipを使ってインストールすることはできません。またAnaconda3も使用しています。Pythonコードからパッケージを含むRスクリプトを実行する

私はすべて、パッケージがインストールされたRスクリプトを実行する単純なパッケージが好きです。どんな助けでも大歓迎です。

これは私のPythonコードの関連部分です:

sp.run('Rscript Hausdorff.R', shell=True) 

bFile = open("HausdorffData/hausdorff.txt", "r") 
result = bFile.read() 
bFile.close() 
hausdorff_dist = float(result) 

return hausdorff_dist 

は、これは私のRスクリプトです:

library(pracma) 

setwd('HausdorffData') 

PointsA <- as.matrix(read.table("HFileA.txt", header = FALSE)) 
PointsB <- as.matrix(read.table("HFileB.txt", header = FALSE)) 

H = hausdorff_dist(PointsA, PointsB) 
write(H, file = "hausdorff.txt",ncolumns = 1, append = FALSE) 

これは、次のエラーを生成します。

Error in library(pracma) : there is no package called 'pracma' 
Execution halted 
+0

ここにパッケージ、ライブラリ、またはプラグインを要求するのは適切ではありません。回答とコメントは、主に意見ベースに基づいています。いくつかのコードを提供している場合は、試したものに対して追加の行や修正を加える手助けをすることがあります。あなたの試行を見せてください。ありがとう。 – Dilettant

+0

私が言及しているものの関連するコードを追加するように編集しました。ありがとう@Dilettant – BBollen23

+0

'Rscript'のように見えますが間違った場所にありますか? '.libPaths()'などを試しましたか? – Dilettant

答えて

0

おかげで@このためのディレッタント:

Rがこれを使わずにスクリプトを個別に実行できるような場合でも、RスクリプトをPythonなどから実行する場合は、スクリプトがライブラリのどのパスを認識しているかを確認する必要があります。コード:

.libPaths(dir\to\package) 

コードに作業ディレクトリの変更に関するその他の行がある場合は、ライブラリパスを変更しても影響を受けません。

+0

これは特別な使用例です。他のプログラムからRスクリプトを呼び出すときに '.libPaths()'を指定する必要はありません。私はPythonから多くのRスクリプトを実行しました。どのようにRスクリプトを呼び出していますか?サブプロセスモジュールからではない 'sp.run()'とは何ですか? – Parfait

+0

sp.run()はサブプロセスモジュールにあります。これはPython 3.5で追加されました。そしておそらくそれは本当に特殊なケースですが、sp.call()またはsp.run()を呼び出しても、同じエラーが発生します。これは、私がそうした簡単な修正をしたときに、数多くのことを見て解決策を見つけるのが難しかった理由かもしれません。 – BBollen23

関連する問題