3

私はRにはまったく慣れていませんが、この質問は次の投稿1、2、3少し異なるトピック4に密接に関連しているようです。残念ながら、私はすぐにコメントできるほどの評判がありません。私の問題は、そこにあるすべての提案を行った後でも、コードがまだ機能しないことです:

  1. 説明ファイルに「Depends」を含めました
  2. NAMESPACEの変更を含む2番目の方法を試しました(再現できません)
  3. コードの非常に小さな部分を含むサンプル パッケージ を作成しました"J" not found in routes[J(lat1, lng1, lat2, lng2), .I, roll = "nearest", by = .EACHI]、(ではなく'lat1' not found in routes[order(lat1, lng1, lat2, lng2, time)])少し異なるエラーが表示されました。
  4. コンソールと R スクリプトを使用して、すべてのスクリプトをテストしました。そこでは、コードは問題なく実行されました。

ご支援ありがとうございました!

編集:@ローランド

  1. あなたが正しいです。Roxygen は名前空間を上書きします。関数に含める#' @import data.table必要があります。なぜDepends: data.tableDESCRIPTIONファイルに挿入するだけではうまくいかないのか分かりますか? これはドキュメントの役に立つヒントになるかもしれません。
  2. routes <- routes[order("lat1", "lng1", "lat2", "lng2", "time")] に変更すると、この行が突然問題にならなくなったため、少なくとも少しは役に立ちました。この場合、data.frame オーダーが使用されるのは正しいですか? 私は今どこまで行くのか見ていきます。最終結果はまたお知らせします…
4

2 に答える 2

4

質問への回答 (編集後)。

  1. R exts マニュアルの引用:

ほとんどの場合、「依存」に記載されているパッケージも NAMESPACE ファイルからインポートする必要があります。これにより、他のパッケージが現在のパッケージをインポートするときに、これらのパッケージの必要な部分が利用できるようになります。

したがって、data.table に依存またはインポートする場合でも、NAMESPACE にインポートする必要があります。

  1. order呼び出しが期待どおりではないようです。次のことを試してください。

order("lat1", "lng1", "lat2", "lng2", "time")

library(data.table)
data.table(a=2:1,b=1:2)[order("a","b")]

問題が発生した場合は、期待される結果の単体テストを作成してデバッグを開始することをお勧めします。単体テストをパッケージに入れる最も基本的な方法は、単純な R スクリプトを呼び出しtestsを持つディレクトリに配置することです。stopifnot(...)スクリプトの開始時にパッケージをライブラリ化/要求する必要があることに注意してください。

于 2016-04-26T13:27:50.180 に答える