2015-12-31 10 views
6

मैं knit::kable और pander::pandoc का उपयोग कर आवृत्ति तालिकाओं को प्रिंट कर रहा हूं, और आम तौर पर यह HTML/Word/LaTeX आउटपुट के लिए बहुत अच्छा काम करता है। लेकिन कभी-कभी मैं अंतिम उत्पाद में आयाम नामों को संरक्षित करना चाहता हूं। दुर्भाग्य से, pander और knitr दोनों को मार्कडाउन में कनवर्ट करते समय ड्रॉप करें।बुनाई या पैंडर आउटपुट में टेबल dimnames रखें?

# create a simple table 
tab <- table(mtcars$gear, mtcars$carb) 

# add dimension names 
names(dimnames(tab)) <- c("gear", "carb") 

यह एक तालिका बनाता है:

carb 
gear 1 2 3 4 6 8 
    3 3 4 3 5 0 0 
    4 4 4 0 4 0 0 
    5 0 2 0 1 1 1 

लेकिन अब हम साथ, कहते हैं, kable मुद्रित करता है, तो:

> kable(tab) 

| | 1| 2| 3| 4| 6| 8| 
|:--|--:|--:|--:|--:|--:|--:| 
|3 | 3| 4| 3| 5| 0| 0| 
|4 | 4| 4| 0| 4| 0| 0| 
|5 | 0| 2| 0| 1| 1| 1| 

कोई आयाम नामों! (और ?kable कोई भी विकल्प इंगित नहीं करता है जिसमें उन्हें शामिल किया जाएगा।)

इन उपकरणों को संरक्षित करने वाले टूल के लिए कोई सुझाव? मैंने देखा है कि descr:CrossTable चाल करता है, लेकिन इसमें बहुत सारी अतिरिक्त जानकारी शामिल है जिसे मैं छोड़ना चाहता हूं।

बहुत धन्यवाद।

उत्तर

5

आप एक फ्लैट आकस्मिकता तालिका परोक्ष आयाम नामों होने बनाने के लिए ftable उपयोग कर सकते हैं जैसे:

> pander::pander(ftable(tab)) 

---- ---- - - - - - - 
    carb 1 2 3 4 6 8 

gear     

3  3 4 3 5 0 0 

4  4 4 0 4 0 0 

5  0 2 0 1 1 1 
---- ---- - - - - - - 

या आप भी इस तरह के रूप में descr::CrossTable से नहीं की जरूरत कोशिकाओं को दबाने कर सकते हैं:

> pander(descr::CrossTable(tab, prop.r = FALSE, prop.c = FALSE, prop.chisq = FALSE)) 

------------------------------------------------------------------------------ 
&nbsp;\ carb\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ 
    gear  1   2   3   4   6   8  Total 
--------- -------- --------- --------- --------- --------- --------- --------- 
**3**\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ 
    N\  3\  4\  3\  5\  0\  0\   15\ 
Total(%) 9.375% 12.500% 9.375% 15.625% 0.000% 0.000%    

**4**\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ 
    N\  4\  4\  0\  4\  0\  0\   12\ 
Total(%) 12.500% 12.500% 0.000% 12.500% 0.000% 0.000%    

**5**\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ &nbsp;\ 
    N\  0\  2\  0\  1\  1\  1\   5\  
Total(%) 0.000% 6.250% 0.000% 3.125% 3.125% 3.125%    

    Total  7  10   3  10   1   1  32  
------------------------------------------------------------------------------ 

या GH पर टिकट जमा करें :)

+0

पूरी तरह से काम किया! यह इतना आसान है कि मुझे विश्वास नहीं है कि मैंने मदद के लिए एसओ आने से पहले कोशिश नहीं की थी। धन्यवाद! – ChadBDot

+0

एक और बात - मैंने अभी देखा है कि आपके उत्तर में 'पैंडर :: पैंडर (फ़ेबल (टैब)) के आउटपुट में कॉलम, पंक्ति या आयाम नामों के आसपास उद्धरण नहीं हैं। लेकिन जब मैं यह वही आदेश चलाता हूं (ओएस एक्स 10.11.2 के लिए आर 3.2.2 पर पैंडर 0.6.0), सब कुछ डबल कोट्स में लपेटा जाता है। कोई विचार यह कैसे दबाने के लिए? एक बार फिर धन्यवाद। – ChadBDot

+0

@ChadBDot को 'पैंडर' के हाल के संस्करण के साथ नहीं होना चाहिए - क्या आप कृपया 'devtools :: session_info()' और एक पूर्ण पुनरुत्पादित उदाहरण (जैसे 'टैब' बनाने के ऊपर की रेखाओं सहित जीएच पर टिकट जमा कर सकते हैं और फिर 'पैंडर' + 'फटेबल' कॉल? यह बहुत उपयोगी होगा। – daroczig

संबंधित मुद्दे