2016-06-14 8 views
1

rpy2パッケージを使用したい。私が標準ライブラリに属していないRのPortfolioAnalyticsライブラリをインポートするとき、私はもう何も出力を得ません。 (問題の私は以下の通りので、私は)(Windowsコンソールを経由してWindows上ではなく、アイドルから直接私のPythonコードを実行します。)rpy2:標準RライブラリでないRライブラリをインポートすると出力されない

例:

まずコードが正常に動作します:

import rpy2.robjects as robjects 
    from rpy2.robjects.packages import importr 

    print 'check output 1' 
    utils = importr("utils")  # 'utils' belongs to the standard lib 

    print 'check output 2' 

出力:

check output 1 
    check output 2 

これまでのところは良いです。しかし、以下の例では、もう動作しません。

第二のコードは動作しません:

import rpy2.robjects as robjects 
    from rpy2.robjects.packages import importr 

    print 'check output 1' 
    utils = importr("PortfolioAnalytics", lib_loc = "C:\username\Documents\R\win-library\3.3") 

    print 'check output 2' 

出力:

check output 1 

追加注: 私は次のように問題に接続されているかどうかわかりません。 Windowsコンソールを使用してコードを実行したい、エラーが発生する

RuntimeError: R_USER not defined. 

(私はRのbinディレクトリをPATH変数に追加しました)とにかく、それは私の緊急の問題ではありません。私はこの情報を私の問題に関連している場合に備えて追加したかっただけです。

答えて

1

これはコメントでなければなりませんが、まだコメントを書くことはできません。

エラーを再現しようとしましたが、できませんでした。ここに私の考えです:

  1. 私はR_USERを設定する必要がありました。私はあなたの周りにどのようにしているのか分かりませんが、そうすることをお勧めします。
    利用可能なRのバージョンが異なります。最新のもの(R 3.3.0)は、this postで指定されたディレクトリにR.dllを格納します。これは、R_HOMEが指すはずのものです。私は他の場所で上位ディレクトリ(.../R/R-x.y.z/)または別のディレクトリ(.../R/R-x.y.z/bin/i386)を使用している人を見てきました。問題が発生した場合は、そのうちの1つを試してみてください。

  2. また、PATH変数にR.dllを含むディレクトリを追加することをお勧めします。

  3. 私が考えることができる最後のことは、あなたのlib_locの使用に関係します。 rpy2のドキュメントでは、このオプションをimportrにすると、ライブラリを指し示すべきですが、Portfolio AnalyticsのCRAN pageは、パッケージをコンパイルする必要があることを示しています。おそらくそうではないかもしれませんが、パッケージが(例えば)install.packages("PortfolioAnalytics")経由でインストールされていないか、少なくとも正しくはありませんか?その場合、lib_locの値が正しいディレクトリを指しているかもしれませんが、ライブラリは実際にはコンパイルされません。

私がやった約何:

  1. ダウンロードのPythonをインストールし、visual c++ compiler for python
  2. R_HOMER_USER環境変数を設定してインストールし、R.を含むディレクトリを追加R
  3. をインストールします。私のPATHにdllを
  4. hereの回答を考慮して、Rコマンドラインを使用してinstall.packages("package_name")でPortfolioAnalytics(およびそのすべての依存関係)をインストールします。

その後、あなたのコードを実行することがエラーなしで私のために働いていました。 (Windows 10のPython 2.7とR 3.3.0のコマンドライン、IDLE、Eclipse(PyDev)からテストされています)

これはあなたに役立つ場合があります遠い

編集:私は上記の動作を部分的に再現できましたが、それはlib_locの使用に関連しているようです。 importrの詳細な文書はなく、lib_locの使用法ではないようです。パッケージが正しくインストールされたことを確認した後、lib_loc引数でその場所を指定しようとしました。次のディレクトリのすべては、この目的のために無効な値であることが判明:

  • /R_DIR /ライブラリ
  • /R_DIR /ライブラリ/ PortfolioAnalytics
  • /R_DIR /ライブラリ/ PortfolioAnalytics/libsに
  • /R_DIR /ライブラリ/ PortfolioAnalytics/libsに/ x64の
  • /R_DIR /ライブラリ/ PortfolioAnalytics/libsに/私がチェックし、すべてをだのi386

。しかし、私がかなり確信しているのは、パッケージが/R_DIR/libraryにインストールされていることです(Windowsの制限により、RがProgram Filesのようなシステムディレクトリにインストールされていない場合に最適です)ので、lib_locを指定する必要はありません。私が正しいとすれば、それは実行可能な回避策です。特にR環境をセットアップし始めたばかりです。

importrコマンドでは、実際には別の問題が既に説明されており、すでに説明されています(私は思う)。ある時点でhereが発生しました。リンクで説明されているように、これはWindowsの機能がなくなってに関連しており、私のためにプリーツククレチの答えによって解決されました。

関連する問題