3

私は R が初めてで、それはパッケージ システムです。OpenCPU で使用する目的で最初のパッケージを作成しました。

この関数の実行中:

#' Create a PNG which shows interpolated senseMap Data
#' 
#' @export
#' @import jsonlite
#' @import sp
#' @import gstat
#' @import rgeos
#' @import maptools
#' @param JSON

inteRidwTest <- function(input){
  ### JSON to data.frame ###
  oSeM_df <- input
  ### data.frame to spatialPointsDataFrame ###
  coordinates(oSeM_df) =~longitude+latitude
  ### adding CRS to the data ###
  proj4string(oSeM_df)="+proj=longlat +datum=WGS84"
  project_df=spTransform(oSeM_df, CRS("+proj=longlat +datum=WGS84")) 
  ### creating a bounding box ###
  bbox <- bbox(oSeM_df)
  ### creating a grid based on the bbox ###
  x.range <- as.numeric(c(floor(bbox[1]), ceiling(bbox[3]))) # min/max longitude of the interpolation area
  y.range <- as.numeric(c(floor(bbox[2]), ceiling(bbox[4])))# min/max latitude of the interpolation area  
  grd <- expand.grid(x = seq(from = x.range[1], to = x.range[2], by = 0.1), y = seq(from = y.range[1], to = y.range[2], by = 0.1))
  coordinates(grd) <- ~x + y
  gridded(grd) <- TRUE
  grdSp <- as(grd, "SpatialPolygons")
  ### adding CRS to grid ###
  proj4string(grdSp)="+proj=longlat +datum=WGS84"
  grd_df=spTransform(grdSp, CRS("+proj=longlat +datum=WGS84")) 
  ### setting up basegrid for the png ###
  grdSp.union <- unionSpatialPolygons(grd_df, rep("x", length(slot(grd_df,"polygons"))))
  llGRD <- GE_SpatialGrid(grdSp.union)
  llGRD_in <- over(llGRD$SG, grdSp.union)
  llSGDF <- SpatialGridDataFrame(grid = slot(llGRD$SG,"grid"), proj4string = CRS(proj4string(llGRD$SG)), data = data.frame(in0 = llGRD_in))
  llSPix <- as(llSGDF, "SpatialPixelsDataFrame")
  ### IDW ###
  llSPix$pred <- idw(value ~ 1, oSeM_df, llSPix)$var1.pred
  return(llSPix$pred)
#   ### create the png ###
#   png(file = "idw.png", width = llGRD$width,height = llGRD$height, bg = "transparent")
#   par(mar = c(0, 0, 0, 0), xaxs = "i", yaxs = "i")
#   image(llSPix, "pred", col = bpy.colors(20, alpha=0.7))
#   dev.off()
}

この入力: https://gist.githubusercontent.com/mdragunski/643a8557a4a0e37d30a1/raw/02d26c3ce83ee0c0c704b7c53984c640002c331f/oSeM-Data-processed.json

次のエラーがスローされます。

OpenCPU エラー HTTP 400 オブジェクト「rgeos」が見つかりません

呼び出し中: get("rgeos", 環境 = .MAPTOOLS_CACHE)

このパッケージと関数をローカルで使用しようとすると、同じエラーがスローされます。rgeos パッケージがインストールされ、私の inteRsense パッケージの前に追加された場合、意図したとおりに動作します。

エラーは、パッケージがインポートする rgeos および maptools パッケージに関連しているようです。パッケージを使用しているときに、これらのパッケージがインポートされる順序を変更したいと考えています。しかし、NAMESPACEファイルでこれを行う方法がわかりません:

# Generated by roxygen2: do not edit by hand

export(helloWorld)
export(inteRidw)
export(inteRidwTest)
import(gstat)
import(jsonlite)
import(maptools)
import(rgeos)
import(sp)

ここで私の質問は次のとおりだと思います:RパッケージのNAMESPACEファイルを変更するにはどうすればよいですか? しかし、本当に助けてくれてありがとう。

4

1 に答える 1

1

RパッケージのNAMESPACEファイルを変更するには?

R パッケージの NAMESPACE ファイルを変更するには、次のことを行う必要があります。

  1. 利用可能なソースからパッケージ ソース *.tar または *.zip をダウンロードします (es. maptools パッケージ リンク)
  2. NAMESPACE ファイルを編集し、インポートするパッケージまたは関数/パッケージを示す行を追加します
  3. DESCRIPTION ファイルを編集し、パッケージを「depends」または「imports」フィールドに追加します。
  4. パッケージを再構築する

問題は、変更がローカルであり、変更したパッケージを自分で配布する必要があることです。

この場合、おそらく最善の解決策は、パッケージのメンテナに連絡して、問題を修正し、cran リポジトリのパッケージを更新できるかどうかを確認することです。

ただし、同じ問題が発生しています。次のエラーが表示されます。

Error in get("rgeos", envir = .MAPTOOLS_CACHE) : object 'rgeos' not found

私が開発しているパッケージがmaptools関数「unionSpatialPolygons」を呼び出すとき。私が取り組んでいるパッケージは、maptools と rgeos パッケージの両方をインポートしますが、それでも失敗します。ユーザーが maptools パッケージを手動でロードすると、すべて正常に動作します。

別の一時的な解決策は、パッケージをロードした後に maptools パッケージをロードすることです。

アップデート

作業中のパッケージの DESCRIPTION ファイルを編集しました。「maptools」パッケージを「imports」フィールドから「depends」フィールドに移動したところ、問題が解決したようです。

于 2016-03-08T10:00:59.087 に答える