दिलचस्प पोस्ट
XML के लिए टेक्स्ट डेटा को सांकेतिकृत करने का सबसे अच्छा तरीका सी बुरा अभ्यास में लचीला सरणी के सदस्यों का उपयोग कर रहे हैं? मैं अपने विजुअल स्टूडियो 2015 परियोजनाओं में क्यूटी का उपयोग कैसे करूं? System.Net.Mail अवैध ईमेल और एएमएल फाइलों का निर्माण करते हैं? होस्ट नामों में अतिरिक्त डॉट्स डालना क्या मेयर्स का सिंगलटन पैटर्न थ्रेड सुरक्षित है? स्वचालित रूप से घुमाएं प्रोग्राम को सक्षम और अक्षम करें? एमवीसी 3 में कोड प्रथम इकाई फ़्रेमवर्क (4.1) का उपयोग करते हुए मैं विदेशी कुंजी रिश्ते की घोषणा कैसे करूं? मैं एक वेबसर्वर के साथ उन्हें लोड करने से पहले asp.Net aspx पेजों को कैसे संकलित कर सकता हूँ? एंड्रॉइड: स्क्रॉलव्यू बल से नीचे अजाक्स jquery async वापसी मान MD5 सुरक्षा ठीक है? क्या HTTP कुकीज विशिष्ट हैं? # कोष्ठक कोष्ठक का उपयोग करके इंपोर्ट <> और उद्धरण अंक "" इष्टतम फ़ाइल बफर आकार पढ़ा है? स्थिरांक के लिए सी # नामकरण सम्मेलन?

आर ऑब्जेक्ट फ़ंक्शंस या "फॉर" लूप में प्रिंट क्यों नहीं करते?

मेरे पास एक डी मैट्रिक्स नाम है। जब मैं इसे दर्ज करता हूँ, सब कुछ ठीक काम करता है:

i <- 1 shapiro.test(ddd[,y]) ad.test(ddd[,y]) stem(ddd[,y]) print(y) 

शापिरो विल्क, एंडरसन डार्लिंग के लिए कॉल, और सभी कामों को रोकें, और एक ही कॉलम निकालें।

अगर मैं इस कोड को "फॉर" लूप में डालता हूं, शापिरो विल्क को कॉल करता है, और एंडरसन डार्लिंग काम करना बंद कर देता है, जबकि स्टैम एंड लीफ कॉल और प्रिंट कॉल काम करना जारी रखता है।

 for (y in 7:10) { shapiro.test(ddd[,y]) ad.test(ddd[,y]) stem(ddd[,y]) print(y) } The decimal point is 1 digit(s) to the right of the | 0 | 0 0 | 899999 1 | 0 [1] 7 

यदि मैं फ़ंक्शन की कोशिश करता हूं और लिखता हूं, तो ऐसा ही होता है। दवेदल और ईडी काम नहीं करते हैं अन्य कॉल करते हैं

 > D <- function (y) { + shapiro.test(ddd[,y]) + ad.test(ddd[,y]) + stem(ddd[,y]) + print(y) } > D(9) The decimal point is at the | 9 | 000 9 | 10 | 00000 [1] 9 

सभी कॉल्स उसी तरह से व्यवहार क्यों नहीं करते?

Solutions Collecting From Web of "आर ऑब्जेक्ट फ़ंक्शंस या "फॉर" लूप में प्रिंट क्यों नहीं करते?"

एक पाश में, स्वचालित मुद्रण बंद है, क्योंकि यह किसी फ़ंक्शन के अंदर है। यदि आप आउटपुट देखना चाहते हैं तो आपको दोनों मामलों में कुछ स्पष्ट रूप से print करना होगा। [1] 9 चीजें आपको मिल रही हैं क्योंकि आप y के मूल्यों को स्पष्ट रूप से प्रिंट कर रहे हैं।

यहां यह एक उदाहरण है कि आप ऐसा करने के बारे में कैसे सोच सकते हैं।

 > DF <- data.frame(A = rnorm(100), B = rlnorm(100)) > y <- 1 > shapiro.test(DF[,y]) Shapiro-Wilk normality test data: DF[, y] W = 0.9891, p-value = 0.5895 

इसलिए हमारे पास स्वत: प्रिंटिंग है पाश में हमें यह करना होगा:

 for(y in 1:2) { print(shapiro.test(DF[,y])) } 

यदि आप अधिक परीक्षणों को प्रिंट करना चाहते हैं, तो उन्हें पाश में अतिरिक्त लाइनों के रूप में जोड़ें:

 for(y in 1:2) { writeLines(paste("Shapiro Wilks Test for column", y)) print(shapiro.test(DF[,y])) writeLines(paste("Anderson Darling Test for column", y)) print(ad.test(DF[,y])) } 

लेकिन यह बहुत आकर्षक नहीं है जब तक आप आउटपुट के रीमांड के माध्यम से पढ़ना पसंद नहीं करते। इसके बजाय, उचित परीक्षण वस्तुओं को क्यों नहीं बचाएं और फिर आप उन्हें प्रिंट कर सकते हैं और उनकी जांच कर सकते हैं, शायद उन्हें टेस्ट आँकड़े और पी-वैल्यू को एक टेबल में एकत्रित करने की प्रक्रिया भी कर सकते हैं? आप ऐसा कर सकते हैं जो एक लूप का उपयोग करते हैं:

 ## object of save fitted objects in obj <- vector(mode = "list", length = 2) ## loop for(y in seq_along(obj)) { obj[[y]] <- shapiro.test(DF[,y]) } 

हम फिर मॉडल का उपयोग कर देख सकते हैं

 > obj[[1]] Shapiro-Wilk normality test data: DF[, y] W = 0.9891, p-value = 0.5895 

उदाहरण के लिए, या lapply का उपयोग करते lapply , जो हमारे द्वारा परिणामों को हमारे लिए स्टोर करने के लिए उपयोग करने वाले ऑब्जेक्ट की स्थापना का ख्याल रखता है:

 > obj2 <- lapply(DF, shapiro.test) > obj2[[1]] Shapiro-Wilk normality test data: X[[1L]] W = 0.9891, p-value = 0.5895 

अब कहो मैं W और p-value डेटा निकालना चाहता था, हम चाहते हैं कि बिट्स को निकालने के लिए हम सारे परिणाम संग्रहित कर सकते हैं, जैसे:

 > tab <- t(sapply(obj2, function(x) c(x$statistic, x$p.value))) > colnames(tab) <- c("W", "p.value") > tab W p.value A 0.9890621 5.894563e-01 B 0.4589731 1.754559e-17 

या महत्व सितारों के लिए रुचि रखने वालों के लिए:

 > tab2 <- lapply(obj2, function(x) c(W = unname(x$statistic), + `p.value` = x$p.value)) > tab2 <- data.frame(do.call(rbind, tab2)) > printCoefmat(tab2, has.Pvalue = TRUE) W p.value A 0.9891 0.5895 B 0.4590 <2e-16 *** --- Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 

यह स्क्रीन पर आउटपुट को फायरिंग से बेहतर होना चाहिए जो आपको फिर से डालना होगा?

एक नया उत्तर नहीं है, लेकिन उपरोक्त के अतिरिक्त: "flush.console ()" प्रिंटिंग को बाद में लूप के दौरान जगह लेने के लिए बाध्य करने के लिए आवश्यक है लूप के दौरान प्रिंट () का उपयोग करने का एकमात्र कारण प्रगति दिखाना है, जैसे कई फाइलें पढ़ना

 for (i in 1:10) { print(i) flush.console() for(j in 1:100000) k <- 0 } 

गेविन सिम्पसन से शानदार जवाब मैंने पिछले जादुई जादू को लिया और इसे एक समारोह में बदल दिया।

 sw.df <- function ( data ) { obj <- lapply(data, shapiro.test) tab <- lapply(obj, function(x) c(W = unname(x$statistic), `p.value` = x$p.value)) tab <- data.frame(do.call(rbind, tab)) printCoefmat(tab, has.Pvalue = TRUE) } 

तब आप इसे अपने डेटा फ़्रेम के साथ कॉल कर सकते हैं sw.df (df)

और यदि आप परिवर्तन की कोशिश करना चाहते हैं: sw.df (लॉग (डीएफ))