我有以下rasterLayer:
> patK[["199006"]][[1]]
class : RasterLayer
dimensions : 640, 960, 614400 (nrow, ncol, ncell)
resolution : 1, 1 (x, y)
extent : 0, 960, 0, 640 (xmin, xmax, ymin, ymax)
coord. ref. : NA
data source : in memory
names : layer
values : 1, 1 (min, max)
当我尝试绘制它时,我收到以下错误:
> plot(patK[["199006"]][[1]])
Error in as.double(y) :
cannot coerce type 'S4' to vector of type 'double'
这是什么意思?我是否正确使用该功能或是否应该使用其他功能?
编辑:有关patK
的详细信息:
> names(patK)
[1] "199006" "199007" "199008" "199009" "199010" "199011" "199013" "199014" "199015" "199016"
> rapply(patK, class)
1990061 1990062 1990063 1990064 1990065 1990066 1990067 1990068
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990069 19900610 1990071 1990072 1990073 1990074 1990075 1990076
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990077 1990078 1990079 19900710 1990081 1990082 1990083 1990084
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990085 1990086 1990087 1990088 1990089 19900810 1990091 1990092
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990093 1990094 1990095 1990096 1990097 1990098 1990099 19900910
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990101 1990102 1990103 1990104 1990105 1990106 1990107 1990108
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990109 19901010 1990111 1990112 1990113 1990114 1990115 1990116
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990117 1990118 1990119 19901110 1990131 1990132 1990133 1990134
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990135 1990136 1990137 1990138 1990139 19901310 1990141 1990142
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990143 1990144 1990145 1990146 1990147 1990148 1990149 19901410
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990151 1990152 1990153 1990154 1990155 1990156 1990157 1990158
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990159 19901510 1990161 1990162 1990163 1990164 1990165 1990166
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
1990167 1990168 1990169 19901610
"RasterLayer" "RasterLayer" "RasterLayer" "RasterLayer"
RStudio将patK
描述为全球环境中的“大型列表(10个元素,235.6 mb)”。 patK
的每个元素都是list [10]
类型,每个元素都是S4 [640 x 960 x 1] (raster::RasterLayer)
类型。
这是一个重现示例,其中包含RasterLayer对象列表
library(raster)
r <- raster(system.file("external/test.grd", package="raster"))
s <- list(r, r, r)
x <- list(s, s, s)
names(x) <- c("A", "B", "C")
你可以做
plot(x[["A"]][[1]])
要么
rr <- x[["A"]][[1]]
plot(rr)
所以patK
还有其他的事情发生了 - 但我猜不出它是什么。即使你不能展示str(patK)
,你也可以展示names(patK)
,rapply(patK, class)
此外,当你这样做时会发生什么
x <- patK[["199006"]][[1]]
x
plot(x)
也许另一个包正在创造一个问题。你可以在干净的环境中尝试这个,没有加载包,除了raster
。并尝试raster::plot()
,也许看看showMethods("plot")
(是否有一个方法为某个包定义的方法?)
library(raster)
r <- system.file("external/test.grd", package="raster")
s <- stack(r, r, r)
plot(s[[1]])
在你的情况下,尝试:
plot(patk[[1]])