2012-01-16 10 views
1

私は使用する必要のあるRパッケージを持っています。問題のパッケージはBQuantです。UbuntuでWindowsのみのRパッケージをインストール

パッケージは、zip fileとしてダウンロードできます(後で分かります)。Windowsバイナリが含まれています。まず、これらのバイナリを抽出して.tar.gzにパックしようとしました。そして、install.packages()を使って.tar.gzパッケージをインストールしました。

これは何のエラーも出ませんでしたが、私がパッケージRの機能を呼び出そうとしたときにエラーError: could not find function <function_name>が届きました。

それで、source filesが見つかりました.tar.gzで抽出と再パックを試みました。今回は、インストール中にエラーが発生しました:**ERROR: Windows-only package**

source filesの記述を確認すると、OS_type: windowsと表示されました。私はその行を削除して、もう一度試しました。エラーだったこの時間:

gcc -std=gnu99 -shared -o BQuant.so dp.o -L/usr/lib/R/lib -lR 
dp.o: file not recognized: File format not recognized 
collect2: ld returned 1 exit status 
make: ***[BQuant.so] Error 1 
ERROR: compilation failed for package ‘BQuant’ 

そう簡単で: 私はこの窓のパッケージは、Linuxにインストールすることができるかどうかを知る必要があります。

+0

2つのバイナリファイル(.dllと.o)が含まれているため、ソースファイルが好きではありません。これらを削除しようとする可能性がありますが、それはうまくいかないでしょう。 –

+0

ソースファイルは "R"という名前のフォルダにあります –

+0

私はパッケージ作成者に電子メールを送り、Linuxバイナリを要求するか、あるいはパッケージソースを求めます。 linuxでは、ソースからパッケージを構築するのはかなり簡単です。 –

答えて

3

私は 'BQuant \ R \ fcn_preproc.r'ファイルのビットを変更する必要があると思います。

このファイルはdllファイル(Windows専用ファイル)を読み込みます。

.First.lib <- function(lib, pkg) 
{ 
    library.dynam("BQuant.dll") 
} 

プラットフォームに基づいたテストを追加しようとする場合があります。

.First.lib <- function(lib, pkg) 
{ 
    if(.Platform$OS.type == 'windows'){ 
     library.dynam("BQuant.dll") 
    } 
    if(.Platform$OS.type == 'unix'){ 
     library.dynam("BQuant.so") 
    } 
} 

これはトリックを行う可能性があります。 osファイルを依存ファイルに変更することも忘れないでください。

.cファイルをコンパイルしようとすると、このコマンドを端末から使用できます。

R CMD SHLIB -o BQuant.so dc.c 
1として

+0

これが動作しない場合は、dc.oファイルを削除してg ++ -c dc.c.を実行してください。これはおそらくRでコンパイルできる新しいdc.oファイルを作ります –

+0

R.hヘッダーファイルはどこにありますか? 〜/ R/includeフォルダ内の –

+0

。少なくともWindowsインストールの場合。 –

2

http://www.ats.ucla.edu/stat/r/library/interface.pdfhttp://www.maths.lancs.ac.uk/~prangle/CinR/CinR.pdfは、私の知る限り見ることができるようにUNIX/Linuxのためのコンパイルされたコードオブジェクトはありません。あなたが実際にリンクしているzipはWindowsのバイナリだけで、linuxのBQuant.dllに相当するものにコンパイルするために必要なソースがありません。 Rコードでさえも、 "コンパイルされた"形式、すなわちプレーンテキストのRコードではない。

ソースコードを持っていなければ、これをコンパイルしてLinux上で動作することはできません。保守担当者が、適切なソースパッケージを提供できるかどうかを確認してください。

+0

平文Rコードは、このアーカイブの「R」フォルダにあります。http://www.stat.purdue.edu/~ovitek/BQuant-Web/BQuant/BQuant_1.0_Source.zip –

+0

大丈夫です。あなたは今言うことを意味します。ソースコードなしでできることは何ですか? –

+0

私はそれが 'BQuant.dll'のコンパイルされた関数をどの程度パッケージが利用しているかに依存しているかどうかは疑問です。もしあなたが必要としていない一つの関数に制限されていれば、おそらくRコードを取り除き、dllをロードして使用する以外はすべてソースを取り出すことによって、多くのことを行うことができます。必要な機能がdllを使用している場合は、ソースをコンパイルする必要があります。 –

関連する問題