3

我正在尝试确定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

这怎么可能?

4

1 回答 1

3

OK,浏览网格源码,发现方法定义好了,

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

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

于 2015-07-17T22:37:26.593 回答