3

「ラスター」パッケージの「プロット」機能で奇妙な問題が発生しました。

library(raster)
ras <- raster(ncol=10, nrow=10)

編集

values(ras) <- runif(ncell(ras))

編集終了

plot(ras)

Erreur dans as.double(y) : 
cannot coerce type 'S4' to vector of type 'double'

ネットで読んだことによると、このエラーはユーザーによって異なり、おそらくロードされたパッケージによって異なります。私の場合、問題は、「ras」がrasterLayerオブジェクトであるため、特定の「ラスター」メソッドを使用する必要があるときに、rが「グラフィックス」パッケージの標準の「プロット」メソッドを使用するという事実に起因します。ただし、理由がわかりませんが、「プロット」は「ラスター」名前空間にインポートされませんが、他のすべての関数はインポートされます。

> raster::plot
Erreur : 'plot' n'est pas un objet exporté depuis 'namespace:raster'

と比較する:

raster::persp
standardGeneric for "persp" defined from package "graphics"
function (x, ...) 
standardGeneric("persp")
<environment: 0x0cd9eb80>
Methods may be defined for arguments: x
Use  showMethods("persp")  for currently available ones.

名前空間がどのように動作するかを完全には理解していないので、助けを求めています! このような状況に慣れていますか?解決方法はありますか? それまでの間、名前空間の内容を表示する関数を知っていますか (したがって、ラスター名前空間の内容を段階的に確認できます)。

PS: RStudio で R 2.15.2 を使用しています。多くのパッケージが読み込まれていますが、すべて最新です。

sessionInfo()
R version 2.15.0 (2012-03-30)
Platform: i386-pc-mingw32/i386 (32-bit)

locale:
[1] LC_COLLATE=French_Belgium.1252  LC_CTYPE=French_Belgium.1252          LC_MONETARY=French_Belgium.1252 LC_NUMERIC=C                   
[5] LC_TIME=French_Belgium.1252    

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] raster_2.0-41 sp_1.0-5     

loaded via a namespace (and not attached):
 [1] grid_2.15.0      hexbin_1.26.0    intervals_0.13.3 lattice_0.20-6   rgdal_0.8-4      spacetime_1.0-3  spam_0.29-2      tools_2.15.0    
 [9] xts_0.9-2        zoo_1.7-9             

ありがとうございます、

フランソワ

4

5 に答える 5

2

これを使用して、パッケージ ラスターのオブジェクトのすべてのリストを取得します

basevals <- ls(pos="package:raster") 

例えば

   which(basevals == 'persp')  ## function persp shows up because it is the exported generic.
   141
   which(basevals == 'plot')   ## no function plot
   integer(0)

いいえ、これを行うと、うまくいきます:

library(raster)
r <- raster(ncol=10, nrow=10)
values(r) <- runif(ncell(r))
plot(r, main='Raster with 100 cells')

ここには確かにプロットメソッドがあります。S4メソッドであるため、前のリスト「basevals」には含まれていません。

ラスターパッケージのプロット方法を取得するには、これを試してください:

 getMethod('plot',signature=signature(x='Raster', y='ANY'))

またはより効率的に使用する

findMethods("plot", "package:raster"). 
于 2013-01-21T12:00:27.730 に答える
1

これは、古いセッションがある場合に発生することがあります (通常、起動時に古いセッションを読み込むことによって発生します)。これは、新しい R セッションを開始すると (以前に保存したセッションを読み込まずに) 消えます。

于 2013-02-16T07:24:27.633 に答える
0

RStudioも使用して、同じエラーで実行しています。

私の問題は、プロジェクトのファイルをraster介してパッケージをロードしたことです。しかし、Rprofile のコードは何よりも先に読み込まれるため、パッケージ (ジェネリック プロットを含む) はラスターの後に読み込まれ、問題が発生します。library(raster).Rprofilegraphics

解決策: Rprofile のlibrary(graphics)library(raster)に置くと、うまくいきました。

于 2016-03-14T14:14:18.600 に答える
0

私にとって、この S4 クラスの名前空間の問題を解決したのは、rasterパッケージを依存関係として追加することでした。したがって、attach()依存関係が行うことであるため、関数の使用も機能するはずです。私はそれが理想的な解決策ではないことを知っていますが、ちょっと、それは統計言語です;)

于 2016-01-25T22:35:58.723 に答える