缺少S3方法,但更高级的功能工作



我试图确定一个问题与grobWidth适用于gtable对象(见gtable:::widthDetails.gtable);当将大小指定为单元的总和时(unit.arithmetic对象),

library(grid)
u = unit(1,"npc") + unit(2,"mm")
grid:::absolute.units(u)
#Error in UseMethod("absolute.units") : 
# no applicable method for 'absolute.units' applied to an object of class #"c('unit.arithmetic', 'unit')"

值得注意的是,absolute.size工作,即使它调用grid:::absolute.units

grid::absolute.size(u)
#[1] 1null+2mm

这怎么可能?

OK,浏览网格源代码,我发现方法定义的,

grid:::absolute.units.unit.arithmetic(u)

但没有导出。所以absolute.size()知道它,因为它在包命名空间中,但是从外部调用它(例如gtable)失败。

最新更新