使用R语言rsm包绘制三向量等高线图在RStudio运行报错问题
RStudio中rsm包等高线绘图报错解决方案
报错原因
该报错由命名空间冲突导致:
原生R控制台启动时仅默认加载R基础包,调用contour方法时会优先匹配rsm包为lm类模型适配的S3方法contour.lm,可以正常识别线性回归模型对象完成绘图。
而RStudio启动时会默认加载一批常用扩展包,部分扩展包也注册了同名的contour方法,优先级高于rsm包的方法,最终调用了基础包的contour.default方法——该方法仅接受矩阵格式的z值输入,无法识别lm模型对象,因此抛出错误:
Error in contour.default(z.lm, x ~ y) : no proper 'z' matrix specified
解决方案
最稳妥无副作用的方案是直接明确指定调用rsm包的contour方法,避免冲突,仅需修改最后一行绘图代码即可。
修正后完整代码
library(rsm) x<-c(5.64,5.64,5.64,6.32,6.99,7.66,6.11,6.11,5.92,5.63) y<-c(0.09,0.12,0.15,0.24,0.29,0.33,0.16,0.18,0.17,0.15) z<-c(10.43,3.83,15.74,0,0,0,15.38,22.98,10.76,16.74) z.lm <- lm(z ~ poly(x, y, degree=2)) # 强制调用rsm包的适配方法,规避命名冲突 rsm::contour(z.lm, x ~ y)
其他可选方案:
- 绘图前先卸载再重新加载rsm包,让其方法优先级置顶:
detach("package:rsm", unload = TRUE) library(rsm) - 在RStudio设置中关闭默认加载的无关扩展包,从根源避免冲突。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

