2015-10-19 9 views
7

का उपयोग कोशिकाओं मैं वर्तमान में उपयोग कर एक मेज छवि बनाने हूँ: enter image description hereविलय टेबल हैडर tableGrob

dput का उपयोग करना (SummaryTable):

SummaryTable <- data.frame(
    index, 

    xa, 
    xb, 

    ya, 
    yb, 

    za, 
    zb 

) 
names(SummaryTable) <- c("Index", 
         "Main X Sub A", 
         "Main X Sub B", 
         "Main Y Sub A", 
         "Main Y Sub B", 
         "Main Z Sub A", 
         "Main Z Sub B") 

tt <- ttheme_default(colhead=list(fg_params = list(parse=TRUE))) 
tbl <- tableGrob(SummaryTable, rows=NULL, theme=tt) 

grid.arrange(tbl,as.table=TRUE) 
उत्पादन के साथ

structure(list(Index = 0:8, `Main X Sub A` = c(1, 0.69, 0.61, 
0.56, 0.5, 0.44, 0.4, 0.36, 0.33), `Main X Sub B` = c(0.86, 0.62, 
0.51, 0.42, 0.36, 0.31, 0.27, 0.24, 0.23), `Main Y Sub A` = c(1, 
0.8, 0.74, 0.68, 0.63, 0.56, 0.52, 0.47, 0.43), `Main Y Sub B` = c(0.86, 
0.77, 0.67, 0.59, 0.53, 0.47, 0.43, 0.39, 0.36), `Main Z Sub A` = c(0, 
0.17, 0.23, 0.27, 0.33, 0.37, 0.42, 0.46, 0.49), `Main Z Sub B` = c(0, 
0.24, 0.33, 0.42, 0.48, 0.55, 0.6, 0.64, 0.66)), .Names = c("Index", 
"Main X Sub A", "Main X Sub B", "Main Y Sub A", "Main Y Sub B", 
"Main Z Sub A", "Main Z Sub B"), row.names = c(NA, -9L), class = "data.frame") 

हालांकि, मैं इस आउटपुट को प्राप्त करने के लिए शीर्ष शीर्षकों को मर्ज करना चाहते हैं (पीएनजी या पीडीएफ के रूप में):

enter image description here

यह तालिका एक्सेल में बनाई गई थी। एक्स, वाई और जेड विलय कोशिकाओं के भीतर हैं।

क्या कोई भी विलय कोशिकाओं पर विधियों के साथ सहायता करने में सक्षम है?

+0

कृपया 'dput (SummaryTable)'। पीएनजी बेकार हैं। – vaettchen

उत्तर

6

एक तरह से join (described here) के बजाय combine उपयोग करने के लिए, अपनी मेज के लिए एक अतिरिक्त शीर्ष लेख पंक्ति जोड़ने के लिए किया जाएगा।

here से एक विचार का उपयोग करके आप अतिरिक्त शीर्षलेख पंक्ति के लिए tableGrob बना सकते हैं।

आप स्थिति को सही करने के लिए gtable के l, और r को बदल सकते हैं।

library(grid) 
library(gridExtra) 

# example data & header row 
tab <- tableGrob(mtcars[1:3, 1:4], rows=NULL) 
header <- tableGrob(mtcars[1, 1:2], rows=NULL, cols=c("head1", "head2")) 

jn <- combine(header[1,], tab, along=2) 
jn$widths <- rep(max(jn$widths), length(jn$widths)) # make column widths equal 
#grid.newpage() 
#grid.draw(jn) # see what it looks like before altering gtable 

# change the relevant rows of gtable 
jn$layout[1:4 , c("l", "r")] <- list(c(1, 3), c(2, 4)) 

grid.newpage() 
grid.draw(jn) 

enter image description here

+0

धन्यवाद @ user20650 मैं अपने टेबल इस कोड का उपयोग करने के लिए इस प्रयास कर रहा हूँ: 'टैब <- tableGrob (SummaryTable [1: 9, 2: 7], पंक्तियों = शून्य) हैडर <- tableGrob (SummaryTable [1, 1: 3], पंक्तियां = एनयूएलएल, कोल्स = सी ("हेड 1", "हेड 2", "हेड 3")) जेएन <- शामिल हों (हेडर [1,], टैब, साथ = 2) जेएन $ चौड़ाई <- प्रतिनिधि (अधिकतम (जेएन $ चौड़ाई), लंबाई (जेएन $ चौड़ाई)) जेएन $ लेआउट [1: 7, सी ("एल", "आर")] <- सूची (सी (1, 3), सी (2 , 5), सी (4, 7)) ' यहां मेरा परिणाम है, हेडर विलय नहीं कर रहे हैं। http://i.imgur.com/89UNHt2.png –

+1

लगभग वहां ... 'jn $ लेआउट [1: 6, सी (" एल "," आर ")] <- सूची (सी (1, 3, 5), सी (2, 4, 6)) '। 'जेएन $ लेआउट [1: 6,]' को देखने के लायक होने के बाद और यह देखने के बाद कि वे समझ में आते हैं) यह वेक्टर रीसाइक्लिंग का उपयोग करता है, ताकि 'l'eft कॉलम' 1,3,5,1 हो, 3,5' और 'r'ight' 2,4,6,2,4,6' – user20650

+0

@ScottHorvath, आपको यह जवाब स्वीकार करना चाहिए –