我正在尝试确定 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 source code ,发现方法是定义的,

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

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

关于r - 缺少 S3 方法但更高级别的功能有效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31485460/

10-12 14:06