2012-10-20 12 views
27

जब मैं lapply का उपयोग करता हूं और कंसोल पर प्रिंट करता हूं तो यह अवांछित [[i]]NULL प्रिंट करता है हालांकि मैं इच्छित संदेश कंसोल पर प्रिंट करना चाहता हूं। मैंने suppressWarnings और suppressMessages की कोशिश की है लेकिन ये अवांछित अपराधी को नहीं हटाते हैं। मैंने lapply खोजा और इसे चुप करने के लिए कोई तर्क नहीं देखा। यह अधिक सौंदर्यपूर्ण है क्योंकि यह फ़ंक्शन में हस्तक्षेप नहीं करता है। मैं कंसोल के लिए वैकल्पिक मुद्रण का विरोध नहीं कर रहा हूं, जब तक कि उपयोगकर्ता चाहें तो इसे बंद कर सकता है।प्रिंटिंग से कंसोल पर लापरवाही बंद करें

यहाँ एक उदाहरण समारोह, उत्पादन है और मैं प्राप्त करना चाहते हैं क्या:

नमूना समारोह:

FUN <- function(x) { 
    FUN2 <- function(z) message(z) 
    lapply(1:3, function(i) FUN2(paste(x, i))) 
} 

FUN("hello") 

आउटपुट:

hello 1 
hello 2 
hello 3 
[[1]] 
NULL 

[[2]] 
NULL 

[[3]] 
NULL 

वांछित आउटपुट :

hello 1 
hello 2 
hello 3 
+2

'lapply' –

उत्तर

34

उपयोग invisible, जैसे:

invisible(FUN("hello")) 
hello 1 
hello 2 
hello 3 

आप इसे समारोह में lapply कॉल लपेट कर सकते हैं भी यह tidier बनाने के लिए। plyr से

+0

परफेक्ट के बजाय 'purrr :: walk' का उपयोग करें। मैं समय समाप्त होने के तुरंत बाद इसे सही के रूप में चिह्नित कर दूंगा। बढ़िया काम करता है (मैंने कॉल को' lapply' 'के रूप में लपेट लिया सुझाया गया), –

+0

अभी भी यह सुनिश्चित नहीं है कि यह क्यों है rks। मैंने कई बार अदृश्य उपयोग किया है लेकिन इस उद्देश्य के लिए नहीं। –

+2

यह अस्थायी रूप से लौटे ऑब्जेक्ट की प्रिंटिंग को अक्षम करता है। – James

6

उपयोग l_ply:

library(plyr) 
FUN <- function(x) { 
    FUN2 <- function(z) message(z) 
    l_ply(1:3, function(i) FUN2(paste(x, i))) 
} 
FUN("hello") 
0

मैंने पाया कि जवाब (invisible(capture.output()) साथ कंसोल के लिए मुद्रण निर्गम की मेरी समस्याओं, Suppress output of stationarity test that is printed to screen के लिए एक बेहतर जवाब था इसके अलावा expect_output testthat के संदर्भ में। बहुत उपयोगी है।

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