metafor:在 addpoly() 中使用 annosym 参数

metafor: use of annosym argument in addpoly()

我用非默认 annosym 值绘制了一个森林图:

res <- rma(ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg, measure = 'OR', method='DL',
       slab=paste(author, year))


forest(res, 
   annosym=c(' (','; ',')'),
   ylim=c(-2,16)
)

并尝试添加一些具有相同annosym规格的子分析结果:

dat.bcg.rand <- dat.bcg[dat.bcg$alloc=='random',]

res.rand <- rma.uni(ai=tpos, bi=tneg, ci=cpos, di=cneg, data=dat.bcg.rand, measure = 'OR', method='DL', 
                            slab=paste(author, year))

addpoly(res.rand, mlab='Random alloc.',atransf=exp, annosym=c(' (','; ',')'))

看到警告:

Warning messages:
1: In text.default(...) : "annosym" is not a graphical parameter
2: In segments(...) : "annosym" is not a graphical parameter
3: In segments(...) : "annosym" is not a graphical parameter
4: In segments(...) : "annosym" is not a graphical parameter
5: In polygon(...) : "annosym" is not a graphical parameter
6: In text.default(...) : "annosym" is not a graphical parameter

和混合两个 annosym 规格的图:

您对此有任何解决方法吗?我真的,真的需要更改 addpoly().

中的默认 annosyms

不知道为什么我忘记在 addpoly.default()addpoly.rma() 中实现 annosym,但现在已经添加了。因此,如果您按照此处所述获取 metafor 的 'development' 版本:

https://github.com/wviechtb/metafor#installation

那么应该可以了。

另一个问题,如果你像这样添加多边形:对齐关闭,因为与最后一个多边形对应的注释需要较少 space。您可以使用:

addpoly(res.rand, mlab='Random alloc.', atransf=exp, annosym=c(' (','; ',')'), width=c(5,5,5))

(或只是 width=5)来解决这个问题(注意 -0.75 由 5 个字符组成)。对齐仍然会稍微偏离,因为默认情况下文本使用的是非固定宽度的字体。如果在 forest()addpoly() 中将其与 fonts="mono" 组合,则对齐将是正确的。您还可以使用默认固定宽度字体以外的其他字体来使它看起来更好and/or 注释仅使用固定宽度字体(fonts 可以采用两个值)。