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