R raster 绘图时出错:“;do.call(“constructMargin”,margin)中出错:第二个参数必须是列表;

R raster 绘图时出错:“;do.call(“constructMargin”,margin)中出错:第二个参数必须是列表;,r-raster,levelplot,R Raster,Levelplot,我正在使用levelplot制作降水数据的光栅层,如下所示。奇怪的是,当我之前运行下面的代码时,它运行得很好,但是现在,没有对代码进行任何更改,我遇到了一个奇怪的错误,并且很少有人在线了解它。以下是我所做的: library(raster) library(maptools) library(rasterVis) library(sp) library(gridExtra) library(grid) library(RColorBrewer) FPrec <- brick(Fncfn

我正在使用levelplot制作降水数据的光栅层,如下所示。奇怪的是,当我之前运行下面的代码时,它运行得很好,但是现在,没有对代码进行任何更改,我遇到了一个奇怪的错误,并且很少有人在线了解它。以下是我所做的:

library(raster)
library(maptools)
library(rasterVis)
library(sp)
library(gridExtra)
library(grid)
library(RColorBrewer)


FPrec <- brick(Fncfname,var="fivedaymax") #making a raster brick
Fr <- abs(init(raster(), 'y'))
Fsm <- mean(FPrec, na.rm=TRUE) #calculates the mean into a raster layer
Fw <- init(FPrec, 'y')
Fw <- cos(Fw*(pi/180)) #creates weights to account for grid cell size 
discrepancies
Fx <- Fsm*Fw #applying the weights to each grid cell
FmapTheme <- rasterTheme(region=rev(brewer.pal(10,"Spectral")))
cutpoints <- c(200,175,150,125,100,75,50,25,0)
levelplot(Fx,margin=F,at=cutpoints,cuts=11,pretty=TRUE,par.settings=FmapTheme, main="Test variable 
for CanESM2") 
对象“Fsm”具有以下属性:

Fsm

class      : RasterLayer 
dimensions : 64, 128, 8192  (nrow, ncol, ncell)
resolution : 2.8125, 2.789327  (x, y)
extent     : -181.4062, 178.5938, -89.25846, 89.25846  (xmin, xmax, ymin, 
ymax)
crs        : +proj=longlat +datum=WGS84 
source     : memory
names      : layer 
values     : 1.949589, 627.0804  (min, max)
是什么导致了这种看似随机的错误?我尝试在R的其他版本(或在新的工作区)中运行相同的东西,但同样的问题也发生了。这是levelplot中的某些东西导致的,但我看不到任何明显的东西,特别是因为这段代码在以前工作得很好)


在此方面的任何帮助都将不胜感激

请使您的代码最小、可复制且自包含(使用代码创建光栅层)。您当然不需要11个包来说明这个问题@罗伯特·希曼斯-谢谢你的回复。我编辑了我的原始帖子,以尽量减少代码量。然而,一个可再现的示例不一定会导致相同的问题错误(即,我不能再现错误)?您应该能够制作一个确实再现错误的示例。如果不是,那也应该很重要。为什么不呢?要找出发生这种情况的地点和原因,您需要消除混乱。您需要提供在一行或两行中创建
Fx
的代码。你应该只使用默认值的levelplot(而不是
par,settings
main
,等等)。@Robert Hijmans-我确实发现了问题。它只是对象名称分配的产物。我认为我意外选择的对象名与实际函数冲突,因此当代码运行时,它会破坏它之外的东西,levelplot是最敏感的。因此,当达到levelplot时,会产生错误,并且该错误对于任何levelplot以及之前正常工作的任何levelplot都是永久性的。修复此问题的唯一方法是关闭R,重新启动并选择另一个对象名来代替导致此问题的对象名,然后再次运行所有操作。
Fsm

class      : RasterLayer 
dimensions : 64, 128, 8192  (nrow, ncol, ncell)
resolution : 2.8125, 2.789327  (x, y)
extent     : -181.4062, 178.5938, -89.25846, 89.25846  (xmin, xmax, ymin, 
ymax)
crs        : +proj=longlat +datum=WGS84 
source     : memory
names      : layer 
values     : 1.949589, 627.0804  (min, max)