我使用包BsMD绘制贝叶斯筛选的边际因子后验概率(plot.BsProb) . 我想改变xlab和ylab,但是我收到一个错误:
library(BsMD)
X = matrix(c(1, 1, 1, 1, 1,-1,-1,-1,-1,-1,-1, 1, 1, 1,-1,-1,-1,-1,-1,
1,-1, 1,-1,-1, 1,-1, 1,-1, 1,-1,-1,-1,-1,-1, 1,-1,-1,-1,
-1,-1, 1, 1, 1, 1, 1,-1,-1,-1, 1,-1, 1, 1, 1, 1,-1,-1, 1,
1, 1, 1,-1,-1, 1, 1, 1,-1,-1,-1, 1,-1,-1, 1, 1, 1,-1,-1,
1, 1,-1, 1,-1, 1,-1,-1, 1,-1, 1, 1, 1,-1, 1,-1, 1, 1,-1
),nrow=19,ncol=5)
y = matrix(c(6,2,4,11,17,4,2,6,18,11,10,12,12,15,5,9,11,10,9),nrow=19,ncol=1)
Models = BsProb(X = X, y = y, blk = 0, mFac = 5, mInt = 1, p = 0.25, g = 2.5, ng = 1, nMod = 5)
plot(Models, code=FALSE, xlab="asdasdasdasd")
plot.default中的错误(x,y [,1],xlim = range(x),ylim = c(0,1),type =“n”,:形式参数“xlab”由多个实际参数匹配 .
愿有人可以帮我改变xlab和ylab来绘制“模型”吗?
2 回答
您可以暂时更改标签颜色的
par
设置,然后使用title
添加标签 .好老traceback()告诉我们这里发生了什么:
您的
Models
对象被S3分类为BsProb
:因此,运行
plot(Models,...)
调度到plot.BsProb()
,它存在于BsMD
私有环境下:查看上面的代码,我们可以看到它动态定义了一个
spikes()
函数,并在正文的末尾调用它 .spikes()
函数调用plot()
并无条件地传递xlab='factors'
的参数,以及从顶级调用中继的...
可变参数 . 这就是为什么有两个xlab
实际参数匹配xlab
形式参数;一个来自spikes()
词法参数列表,一个来自...
中继 .因此,遗憾的是,没有办法从顶层调用传递
xlab
而不与实现发生冲突 . 你运气不好您可以向BsMD
包的维护者写一封措辞强硬的信,要求他们使BsMD:::plot.BsProb()
函数更灵活,同时只需咬紧牙关并使用黑客来解决限制问题,比如@ fdetsch的优秀建议 .