gpt4 book ai didi

r - 光栅包绘图函数的命名空间问题?

转载 作者:行者123 更新时间:2023-12-04 16:51:05 24 4
gpt4 key购买 nike

我在使用“光栅”包的“绘图”功能时遇到了一个奇怪的问题。

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'

对于我在网上看到的,这个错误取决于用户,并且可能取决于加载的包。在我的例子中,问题来自于 r 使用“graphics”包中的标准“plot”方法,而它应该使用特定的“raster”方法,因为“ras”是一个 rasterLayer 对象。但是,由于我不明白的原因,'plot' 没有导入到 'raster' 命名空间中,而所有其他函数都是。

> 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.

由于我不完全了解 namespace 的行为方式,因此我正在寻求您的帮助!这种情况你是不是很熟悉,你有办法解决吗?同时,您知道显示命名空间内容的函数吗(这样我就可以一步步检查栅格命名空间的内容)?

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

谢谢你,

弗朗索瓦

最佳答案

使用它你可以得到包栅格的所有对象列表

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')

所以这里肯定有一个绘图方法。它不在前面的列表“basevals”中,因为它是 S4 方法。

要获取光栅包的绘图方法,试试这个:

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

或更有效地使用

findMethods("plot", "package:raster"). 

关于r - 光栅包绘图函数的命名空间问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14437750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com