2014-09-11 4 views
5

मैं कुछ कोड के आउटपुट को एक चर में कैसे डुबो सकता हूं? मैं चाहता हूं कि आउटपुट अभी भी कंसोल पर जाए।आर में कंसोल आउटपुट को टी/विभाजित/कॉपी करने के लिए कैसे करें?

मुझे sink नोटेशन पसंद है; मैं capture.output का उपयोग दो कारणों से नहीं करना चाहता:

  1. इसके लिए संबंधित कोड को एक ही कार्य होने की आवश्यकता है; मैं आउटपुट
  2. पर कब्जा करने के लिए फ़ंक्शंस बनाकर अपने कोड को जटिल बनाना नहीं चाहता हूं। यह कैप्चर आउटपुट को अभी भी कंसोल पर जाने की अनुमति नहीं देता है।

मैं नीचे दिए गए कोड के साथ आया, लेकिन यह थोड़ा जटिल है। क्या कोई आसान समाधान है?

fileName <- tempfile() 
sink(fileName, split = TRUE) 
... 
sink() 
out <- readChar(fileName, file.info(fileName)$size) 
unlink(fileName) 
+0

बाद में 'लिखने' ऑपरेशन पर कंसोल पर भेजे जा रहे सामान की प्रतिलिपि बनाने के लिए शायद '%>%' (magrittr) या '% >>%' (पाइपआर) का उपयोग करें? या हो सकता है कि यह 'magritr' से पहले '% tee%' ऑपरेटर :-) प्रकाशित करने का अवसर हो। देखें http://www.r-statistics.com/2014/08/simpler-r-coding-with-pipes-the-present-and-future-of-the-magrittr-package/ –

+0

आपको केवल 'व्यर्थ' का उपयोग करना चाहिए .logger' यह सबकुछ अतिरिक्त है – statquant

उत्तर

1

आपका कोड इतना बुरा नहीं लगता है, लेकिन आप चीजों का उपयोग करके एक छोटा सा कारगर बनाने के कर सकते हैं एक textConnection:

sink(tt <- textConnection("results","w"),split=TRUE) 
print(11:15) 
## [1] 11 12 13 14 15 
sink() 
results 
## [1] "[1] 11 12 13 14 15" 
close(tt) ## clean up 

बाहर देखने के लिए है के लिए केवल एक चीज है कि आप नहीं करते हैं कनेक्शन बंद करें, resultsलॉक बाइंडिंग देखें (?textConnection देखें), जिसका अर्थ यह होगा कि आप उदाहरण नहीं सकते इसे एक नया मान असाइन करें।

आउटपुट कैरेक्टर वेक्टर ने बाइंडिंग को लॉक कर दिया है (कनेक्शन को 'बंद' कहा जाता है जब तक 'लॉक बाइंडिंग' देखें)।

वैकल्पिक रूप से, आप उन्हें capture.output() में प्राप्त करने के लिए एक समारोह में कई बयान रैप करने के लिए नहीं है - आप कर्ली कोष्ठक का उपयोग कर सकते {} एक एकल का मूल्यांकन किया उत्पादन में कई बयान देने के लिए ...

results <- capture.output(split=TRUE,{ 
    print("hello") 
    print("goodbye") 
}) 
संबंधित मुद्दे