首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grid.draw()在加载gridExtra时给出"object 'd‘not“错误

grid.draw()在加载gridExtra时给出"object 'd‘not“错误
EN

Stack Overflow用户
提问于 2014-01-01 02:23:07
回答 1查看 1.7K关注 0票数 1

我用tableGrob生成了一个20Cx10R表,发现它非常慢。因此,我试图找出原因。巴普蒂斯特自己在Has anyone else noticed that tableGrob is slow?中提到了原因。

我尝试了他的例子:http://rpubs.com/baptiste/ftableGrob。初始运行良好,即他的示例中的表生成得非常快。

但是,当我试图加载grid.draw(g) gridExtra以添加ggplot中的绘图时,Error in as.matrix(d) : object 'd' not found 生成了以下错误:Error in as.matrix(d) : object 'd' not found

我的代码在这里(稍微修改了巴普蒂斯特的原始代码):

代码语言:javascript
复制
library(grid)
library(gridExtra)  # NOTE: Loading gridExtra clashes w grid.draw(g) later

aa <- head(iris, 10)
padding = unit(4, "mm")

nc <- ncol(aa)
nr <- nrow(aa)

extended_matrix <- cbind(c("", rownames(aa)), rbind(colnames(aa), as.matrix(aa)))
w <- apply(extended_matrix, 2, strwidth, "inch")
h <- apply(extended_matrix, 2, strheight, "inch")

widths <- apply(w, 2, max)
heights <- apply(h, 1, max)

padding <- convertUnit(padding, unitTo = "in", valueOnly = TRUE)

x <- cumsum(widths + padding) - 0.5 * padding
y <- cumsum(heights + padding) - padding

rg <- rectGrob( x = unit(x - widths/2, "in"), y = unit(1, "npc") - 
                 unit(rep(y, each = nc + 1), "in"), 
               width = unit(widths + padding, "in"), 
               height = unit(heights + padding, "in") )
tg <- textGrob( c(t(extended_matrix)), x = unit(x - widths/2, "in"), 
               y = unit(1, "npc") - unit(rep(y, each = nc + 1), "in"), 
               just = "center" )

g <- gTree( children = gList(rg, tg), x = x, y = y, widths = widths, 
           heights = heights, cl = "table", 
            gp=gpar(fill = rep(c("grey90", "grey95"), each = 2)))

l <- linesGrob()
grid.draw(l)  # Added to show that grid.draw works here...

grid.draw(g)  # ... but not here *confused*
invisible(g)

grid.arrange( g, g, ncol=2)  # I eventually hope to use ggplot2 w the tables drawn with grid.draw

## End of code ##

我对此进行了研究,但没有发现类似的报告/帖子。我怀疑这是因为我对gridExtra的理解很差,所以我提出这件事是为了寻求‘启示’。如果有人能帮忙就好了!

旁白:由于巴普蒂斯特的原始代码也使用“d”,在将“d”转换为“aa”后,R仍然高喊“对象'd‘not!”。想象一下我的困惑!

最后,祝大家新年快乐(2014)!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-01 13:30:09

加载gridExtra时,为类“表”对象带来一个drawDetails方法(由grid.draw调用),该方法与此gTree不兼容(缺少一些属性)。为了简短起见,您应该简单地删除cl = "table"中的gTree,或者选择另一个名称。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20865033

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档