R运行vectorplot报错subset.default(sa,1):'subset' must be logical如何解决
问题原因
该报错由rasterVis包新版本的参数逻辑变更导致:旧版本vectorplot函数传入单个RasterLayer对象时会自动计算其梯度场生成矢量图,新版本默认将输入判定为包含u/v双分量的矢量场,提取分量时触发subset逻辑错误。
可行解决方案
方案1:绘制单栅格的梯度矢量图(和旧版本运行效果一致)
仅需在调用vectorplot时显式添加isField=FALSE参数,声明输入不是预定义的双分量矢量场,函数会自动计算梯度:vectorplot(r1, isField = FALSE)方案2:绘制自定义双分量矢量场
如果你需要用自己生成的x、y方向分量绘制矢量场,直接传入包含两个分量的RasterStack即可,还支持叠加其他栅格作为底图:# 以r2为x方向分量、r3为y方向分量绘制矢量场 vectorplot(stack(r2, r3)) # 叠加r1作为背景参考栅格 vectorplot(stack(r2, r3), r1)
兼容验证
如果修改参数后仍报错,可先将依赖包更新到适配R4.1.2的最新稳定版本,重启R会话后再运行:
install.packages(c("raster", "rasterVis", "lattice"))
内容的提问来源于stack exchange,提问作者Prateek Verma
相关产品推荐
相关产品推荐

