2013-06-12 71 views
5

當我使用左對齊字符串創建tableGrob時,最終結果顯示在末尾截斷了字符串。 是錯誤還是我錯過了什麼?使用表左對齊不正確

library(gridExtra) 
slices <- c(10, 12, 4, 16, 8) 
lbls <- c("US", "UK", "long string left justified but is clipped at the end", "Germany", "France") 
z <- data.frame(lbls,slices) 
grid.newpage() 
grid.draw(tableGrob(z, core.just="left")) 

回答

10

這是一個bug;包作者顯然不理解網格中的文本理由。

您可以排序的解決它像這樣,

textii <- function(d, gp=gpar(), name="row-label-", 
        just="center", parse=TRUE){ 
    x <- switch(just, "center"=0.5, "right"=1, "left"=0) 
    parseglobal <- parse 
    function(ii, parse=parseglobal){ 
     lab <- if(parse) parse(text=d[ii]) else d[ii] 
     textGrob(x=x, label=lab, just=just, gp=gp, name=paste(name, ii, sep="")) 
    } 
} 

assignInNamespace("textii", textii, "gridExtra") 
grid.table(z, core.just="left") 

和/或調整padding.h參數給予更多的空間。嘆氣,真是一團糟。

+0

效果不錯+1!順便說一句,好幽默!我錯了還是你是作者? :-) – Michele

+1

儘管有這些棄用,tableGrob仍然是一個非常有用的工具。 –

+0

我剛剛用「\ n」和'padding.h = unit(10,「mm」)對其進行了測試,結果非常好。 –