2016-08-07 9 views
1

私自身のRパッケージを作成しており、spatialPolygonsDataFrameオブジェクトをプロットしたいと考えています。スクリプトとして書いていたら、library()で必要なパッケージ(maptoolsrgdal、およびrgeos)をロードし、plot(x)とプロットします。自己作成パッケージ:spatialPolygonsDataFrameのロードプロットメソッド

library()is not advisedを使用して構築するためのパッケージを作成する場合、代わりにNAMESPACEImports:に追加して、パッケージをロードすることが通常です。私はこれを行う場合、私は次のエラーが表示されます

Error in as.double(y) : cannot coerce type 'S4' to vector of type 'double'

これは、スクリプトを書く場合library()corrected by loading the maptools packageです。

NAMESPACEImportMethodsFromという個別のメソッドを読み込むことができるので、maptoolsからプロットメソッドをインポートしようとしましたが、運がなかったことがわかりました。 maptoolsパッケージのNAMESPACEを見ると、エクスポートされたプロット方法が見つかりませんでした。私は成功せず、私のNAMESPACEにインポートしようとしていplot.Spatial機能があります見てきました:

No methods found in "maptools" for requests: plot.Spatial

は最後に、私は私のNAMESPACEDepends:代わりのImports:maptoolsを追加しようとしていると、この作業を行います。これを標準的な方法で行うのですか? 1つのメソッドに対してパッケージ全体を添付するのは残念です(加えて、マスクされている関数などはわかりません)。自己作成機能内にマップをプロットするのに必要なツールをロードする最善の方法は何ですか?

編集1:@ Hack-Rの質問に答えて、私はplot.Spatialが必要な唯一の方法であるか、それが正しいかどうかわからない。これが私に教育された推測で、spatialオブジェクトをプロットできるようになります。

+0

を呼び出すことでした。 'plot.Spatial'はあなたがインポートしようとしている唯一の方法だったのでしょうか、それとも別の方法がありましたか? –

+0

Thanks @ Hack-R私が必要とする唯一の方法であるかどうかはわかりません(正しい場合でも)。それは出発点としての私の推測です。編集をご覧ください。 – Phil

答えて

1

@ mdsumnerの回答は正しい方向に私を指摘し、それ自体が有用な議論でした。

spatialPolygonsDataFrameオブジェクトをプロットするために私の特定のクエリに対する答えはImports:spを追加してのは、これが再現できるように、より具体的にしてみましょうsp::plot()

5

plot.Spatialであり、spであり、私はここの答えだと思います。あなたは間違ったパッケージを見ている。

コメントで説明したように、単にsp::plotを使用することができます。

パッケージを開発するにはもう少しです。

あなたの機能がそれ内部を使用することができますが、それはユーザーでない限り、彼らlibrary(sp)に使用することはできませんように、あなたはplotためのメソッドをインポートする場合。あなたはそれを再エクスポートすることができるので、ユーザはspを添付する必要はありませんが、文書化して理由を説明し、spが付いていれば問題はないことを確認する必要があります。 http://r-pkgs.had.co.nz/namespace.html私は名前空間にかなり慣れていましたが、最近あなたが別のものからインポートした関数を再エクスポートすることができたことに気が付いたので、spのプロットを提供することができます。空間依存なし:sp。

私が使用し、パッケージ内の空間のための印刷メソッドをオーバーライドし、その中には、順番にrasterが提供するオーバーライド優先します - 何もあなたがこれをやって停止はありません、それがユーザーの期待を管理の問題だとうまくいけば、ハードなものをしていないが/ er。おそらく普通の使用のためにplotのようなgenericを上書きしたくない場合は、それを具体的に行うmyPlotがあれば明確になりますし、独自のクラスを追加することもできます。

plot.Spatialの内部であり、そのソースはプロットのS4メソッドを定義するために使用されます。メソッドはshowMethods("plot")で表示され、findMethods("plot")[["Spatial#missing"]]またはfindMethods("plot")[["SpatialPolygons#missing"]]の内部関数を得ることができます。

+0

ありがとう、これは役に立ちました。私が気づいていなかった名前空間や方法について教えてくれました。私は 'sp'パッケージを見て、私がこれまで認識していなかった' sp :: plot() 'と' Depends: 'が不要な仕事を見つけました。あなたの答えを更新する気があれば、私はそれを受け入れるでしょう。 – Phil

関連する問題